TRON节点验证交易的时间容忍度

TRON的节点配置文件中vm.minTimeRatio和vm.maxTimeRatio的含义 sr节点: 超级节点,负责出块,全网只有27个超级节点 fullnode节点: 从sr节点同步区块 这篇文章主要介绍深入分析TRON的节点配置文件中vm.minTimeRatio和vm.maxTimeRatio这两个标志的意义。 这两个标志的表示的是节点(包括sr和fullnode)验证区块中智能合约交易的时间比例(时间容忍度)。 什么是时间容忍度? 在tron中,sr节点打包一个智能合约交... 阅读详情

这篇文章主要介绍深入分析TRON的节点配置文件中vm.minTimeRatio和vm.maxTimeRatio这两个标志的意义。

这两个标志的表示的是节点(包括sr和fullnode)验证区块中智能合约交易的时间比例(时间容忍度)。

注:

  • sr节点: 超级节点,负责出块,全网只有27个超级节点
  • fullnode节点: 从sr节点同步区块

什么是时间容忍度?

在tron中,sr节点打包一个智能合约交易时,允许执行智能合约的最大时间是50ms,如果超过50ms就产生OutOfTime错误,让后将错误保存到contractRet中,并且回滚所有执行的状态。同时扣除energylimit指定的所有费用,所以这样的交易是可以被打包的,开发者要非常小心,避免出现这样的情况,否则人财两失。

这里的50ms时间是机器的绝对时间,也就是说当sr开始执行智能合约时,会获取一下系统时间记为vmStartInUs ,然后计算一个截止时间vmShouldEndInUs,vmShouldEndInUs = vmStartInUs + 50 ms, 然后每执行一条智能合约指令,都会比较系统当前时间是不是超过了截止时间,一旦超过,就会触发异常,立即停止执行指令。假设有一笔交易执行的时间是49ms,没有超过50ms,并且也没有其他错误, 所以被记为succes,记录到交易的receipt.result中。

当sr把包含这个49ms的交易广播出去后,某一个fullode节点收到这个区块,并且执行区块中的每一个交易,当执行49ms的交易时,那这个fullnode执行这笔交易的总时间一定也是49ms吗?答案肯定是不一定的, 因为sr节点的机器配置和fullnode不一定完全相同,假如fullnode节点配置比sr节点差一些,很可能执行的总时间会超过50ms,假设是51ms,fullnode会发现这个结果和交易的receipt.result不一致,log日志输出 “[pool-34-thread-1] DB Different resultCode ”,直接导致整个区块验证失败。那这肯定是不能容忍的,不能因为小小的机器误差就导致区块无法同步?

tron的解决方案是,所有节点验证执行其他的节点广播过来的区块中的交易时, 允许的时间不是50ms, 而是一个可以自己设置的值。怎么设置呢, 这里就用到了maxTimeRatio和minTimeRatio。

当执行的一笔交易的receipt.result的不为OutOfTime,那么执行这笔交易最大的时间是50 *maxTimeRatio,如果这笔交易的receipt.result本来就是OutOfTime,那么执行这笔交易最大的时间是50*minTimeRatio。一般tron的节点启动配置文件中minTimeRatio默认为0,maxTimeRatio默认为5。

还是刚才我们举的例子,sr执行交易的时间为49ms,那其他节点验证执行这笔交易只要不超过250ms(505),都不会认为是OutOfTime。如果sr打包的交易的本来就是OutOfTime,那么其他节点验证执行这笔交易的时间不能超过0ms(500),也就是直接认为是超时的。即便多了5倍的时间,有一些性能比较差的机器还是会将本来没有问题的交易误认为是超时交易。所以如果fullnode节点的性能一般,可以将maxTimeRatio调大一些,以防止由于自身的性能原因导致对一个正常的交易验证失败,最终导致区块不能同步。

推荐将minTimeRatio设为0, 为什么呢?为什么对sr认为超时的交易验证要更加严苛呢,我的理解是如果别的sr已经认为是OutOfTime超时了, 我就使用最小的时间系数来验证这个交易,是为了尽量也产生OutOfTime的结果, 和sr达成一致。不过这样似乎不太公平,相当于某一个sr的机器性能成为了交易执行时间的上限,只要出块节点认为是timeout, 那其他节点也会服从。

总结

  • maxTimeRatio 表示的是验证节点对没有超时的交易验证时允许的时间相对于出块节点执行的比例。
  • minTimeRatio 表示的是验证节点对超时交易验证时允许的时间相对于出块节点执行时间的比例。
【TRON101首发】TRON 开发者入门完全指南 #1 TRON 开发者入门完全指南 #1 本指南由Vena Network技术团队提供 TRON 概况 TRON,2017年九月份, 做了千万美元级别的ICO,2018年六月tron主网上线。据官方数据,截至目前,主网上已经有69万个账户注册,每天新增账户量超过2万个。同时TRON每秒支持千量级tps,ETH现在主网还在十几tps量级。不可否认eth生态聚集了很多有天赋的开发者和researche... 阅读详情

相关推荐

TRON 主网节点搭建-2024最新详细版文档

TRON主网节点搭建以前,大概说明一下本次使用的服务器配置,本次从搭建部署到节点完成同步的时间大约为36小时。

J_Lee 4053

TRC-20合约交互

由于波场的地址结构是地址前缀"41"+20字节地址,传地址参数的时候要求是32字节的,所以前面用"0"进行补齐。由于合约中的一些方法是constant,这类方法在调用的时候,是可以通过triggerconstantcontract来进行的,这样就不用广播这笔交易,可以直接获得结果。返回结果中constant_result就是USDT通证的精度,以hex string的格式进行返回,将它进行转换就是6。返回结果中constant_result就是USDT通证的名称,以hex string的格式进行返回。

u013270465的博客 6324

TRON 轻节点搭建及节点数据修剪

TRON 轻节点搭建及节点数据修剪

J_Lee 1960

TRX和TRC10交易三种合约

在TRON中检测TRX或TRC10事务涉及3种类型的合约: TransferConract(系统合同类型) TransferAssetContract(系统合同类型) TriggerSmartContract(智能合约类型) Transaction,TransactionInfo 和 Block 的数据包含所有智能合约交易信息。 TransferContract 和 TransferAssetContract 分别是用于转移TRX和TRC10的系统合同 事务只包含一个契约,因此查询事务使用接口 Get

6096

tron-sdk:波场离线签名以及广播交易相关内容。整合波场相关API,内含trc20以及trx的查询转账离线签名以及广播交易等相关内容。整合部分波场的api

前言 请使用JDK8 只能这个大版本,open-jdk也不行 idea配置 idea 添加这个参数,解决tron-protobuf模块种的Protocol.java文件因为过大编译不成功/报错问题 方法一: Help -> Edit Custom VM Options... 然后,新建一行添加,添加以下内容,然后重启idea即可生效 -Didea.max.intellisense.filesize=999999 方法二: 不引入tron-protobuf项目,而是直接导入libs种的tron-protobuf-xxx.jar包 cd libs mvn install:install-file -Dfile=tron-protobuf-1.0-SNAPSHOT.jar -DgroupId=org.tron -DartifactId=tron-protobuf -Dversion=1.0-SN

手把手教你用UC3844设计多路输出反激电源(附PCB布局避坑指南)

本文详细介绍了使用UC3844设计多路输出反激电源的实战技巧,包括核心电路设计、变压器参数计算、PCB布局优化及EMI抑制方法。通过实验室实测数据和项目经验,帮助工程师避开常见设计陷阱,提升电源性能和可靠性。特别附赠PCB布局避坑指南,助力高效完成开关电源设计。

weixin_30300225的博客 566

TRON开发者指南 | 第十七期:关于节点设置——TRON-CLI

https://weibo.com/ttarticle/p/show?id=2309404380250590026017 波场TRON|TRON开发者指南 波场TRON团队为更好地服务社区开发者及建设者,吸引更多强大力量共同建设TRON全球网络生态社区,特制作TRON开发指南,指南将由浅入深为您介绍在波场网络上所遇到的问题和注意事项。 欢迎来到波场TRON开发者指南,在这里您将找...

hery186的专栏 3607

ArcGIS中的Python入门知识点整理

关于Arcpy大家应该都比较熟悉,Python用的好,数据处理快又好!在ArcGIS中ArcPy是一个以成功的arcgisscripting模块为基础并继承了arcgisscripting功能进而构建而成的站点包。目的是为以实用高效的方式通过Python执行地理数据分析、数据转换、数据管理和地图自动化创建基础。ArcPy提供了丰富纯正的Python体验,具有代码自动完成功能。今天我们就看看关于Arcpy相关处理的使用,通过一些简单代码与大家一起认识Arcpy。

xjt921122的博客 1764

Tron 节点 性能压测

最近搭建了一个TRON节点,同事不相信我的自建节点比官方更靠谱,咱们给他使用golang写一个压测脚本,测试一下。 本文档详细介绍了一个基于 Go 的并发 HTTP 请求工具,帮助你对 Tron 节点进行压力测试。本文档将从代码简介、环境配置、编译运行以及结果分析等方面进行详细说明。

J_Lee 760

Lumerical FDTD新手必看:从零开始搭建光子晶体仿真环境(附完整脚本)

本文为Lumerical FDTD新手提供光子晶体仿真环境的完整搭建指南,涵盖从基础参数设置到脚本编写的全流程。通过典型光子晶体带隙分析案例,详细讲解结构建模、仿真参数配置及后处理技巧,并附赠完整MATLAB脚本,帮助用户快速掌握FDTD仿真核心技术。

3c4x5z6v7b的博客 1045

告别命令行!用这个开源的Web版Kettle工具,5分钟搞定数据集成任务编排

本文介绍了一款开源的Web版Kettle工具,通过直观的拖拽界面大幅提升数据集成效率,告别复杂的命令行操作。该工具基于Kettle核心引擎,支持跨平台协作、轻量化访问和降低学习曲线,特别适合业务分析师快速上手。实测显示,使用该工具后任务配置错误率下降62%,协作效率提升40%。

weixin_30267785的博客 429

【亲测免费】 推荐:一键部署 Tron 网络节点的利器——TronDeployment

推荐:一键部署 Tron 网络节点的利器——TronDeployment 项目介绍 如果你对区块链领域的 TRON 网络感兴趣,并希望参与到节点运营中来,那么 TronDeployment 将是你不可或缺的工具。这是一个简洁而强大的开源项目,允许你轻松地在本地或服务器上部署 TRON 全节点(FullNode)和固态节点(SolidityNode),甚至是 gRPC Gateway。 项目技术分析...

gitblog_00074的博客 1337

Ubuntu20.04下运行LOAM系列:A-LOAM、LeGO-LOAM、SC-LeGO-LOAM、LIO-SAM 和 LVI-SAM

在我第一篇博文Ubuntu 20.04配置ORB-SLAM2和ORB-SLAM3运行环境+ROS实时运行ORB-SLAM2+Gazebo仿真运行ORB-SLAM2+各种相关库的安装的基础环境下跑通A-LOAM首先已经按照上一篇文章已经安装好了ROS noetic、Eigen3.4.0、OpenCV4.2.0和PCL1.10,A-LOAM在Github的开源地址:https://github.com/HKUST-Aerial-Robotics/A-LOAM。接下来根据代码要求,需要安装Ceres,另外环境的变

zardforever123的博客 3万+

tron搭建自用节点

@ https://www.jianshu.com/p/ed42f061e341

galaxy_zh的博客 1898

【Android面试八股文】Android Application为什么是单例?

这道题相对简单,就是考察大家是否了解application的创建流程。的实例,它用来存储和处理整个全局变量的一些事情,它同时还是一个。为空的时候,才会创建,从而保证了它是一个单例对象。一样有自己的生命周期,但是它并没有那么复杂,因为。对象的创建过程,找出它为什么是单例的原因。全局进行一些配置,比如配置插件。的时候才会创建,所以说可以在。凭什么是单例,我们查看下。启动的时候都会创建一个。是怎么一步步创建的。是一个单例,即每一个。

字节卷动 520

华为OD机试双机位C卷:字符串计数匹配 (C/C++/Py/Java/Js/Go)

华为OD机试双机位C卷 字符串计数匹配,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。 华为OD机试 字符串计数匹配, 华为OD上机考试 - 字符串计数匹配。

qq_45776114的博客 1641

Tron波场全节点搭建和使用 (1)

Tron波场全节点搭建和使用 (1) | PHP

路漫漫其修远兮 吾将上下而求索 3190

zynq的vitis工程烧录到Winbond(华邦)型号W25Q256JVEQ的QSPI FLAHS

vitis2023.1直接支持W25Q256JVEQ。

FPGA艺术家的博客 673

前端性能优化之gzip

背景 如果你是个前端开发人员,你肯定知道线上环境要把js,css,图片等压缩,尽量减少文件的大小,提升响应速度,特别是对移动端,这个非常重要。 压缩 压缩方式 前端压缩的方式很多,依赖java的有ant工具,前端自己打包压缩的有grunt,gulp,webpack,这些压缩也很重要,基本上能压缩50%以上,下面我们对压缩文件来个对比,如图所示,这是未压缩的 这是压缩后的 高能预警!!!gzip能在压缩的基础上再进行压缩50%以上!!! gzip压缩原理 但是不是每个浏览器都支持g

盏茶作酒的博客 1270

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

前端性能优化之Gzip

性能优化之Gzip 什么是GZIP ? gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。它是Jean-loupGailly和MarkAdler一起开发的。 压缩原理 Gzip 压缩背后的原理,是在一个文本文件中找出一些重复出现的字符串、临时替换它们,从而使整个文件变小。 根据这个原理,文件中代码的重复率越高,那么压缩的效率就越高,使用 Gzip 的收益也就越大。反之亦然。 文件...

赵天铭的博客 5854

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Webpack打包生产环境进行优化处理

uglifyOptions中设置了压缩选项,包括不显示警告、压缩时移除debugger语句和console.*函数(如console.log),以及移除对console.log的直接引用。test属性定义哪些类型的文件需要被压缩,这里包括.js、.css、.json、.ico、.svg、.xml和.html文件。test: /\.(js|css|json|ico|svg|xml|html)$/, // 匹配文件格式。drop_console: true, // 移除console.*函数。

渔舟小调的博客 832

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JVM 参数使用手册

内存分配相关 Xms英文释义:Initial heap size(in bytes)中文释义:堆区初始值使用方法:-Xms2g 或 -XX:InitialHeapSize=2048m Xmx英文释义:Maximum heap size(in bytes)中文释义:堆区最大值使用方法:-Xmx2g 或 -XX:MaxHeapSize=2048m Xmn英文释义:Maximum new generation size(in bytes)中文释义:新生代最大值使用方法:-Xmn512m 或 -XX

superiorpengFight的专栏 646

TRON对接

参考 官方API文档: https://developers.tron.network/reference C++ https://github.com/aUscCoder/TronWallet TRON资源模型 参考: https://tronprotocol.github.io/documentation-zh/mechanism&algorithm/resource/ 如果是转账, 目标账户不存在,包括普通转账或发行Token转账,转账操作则会创建账户并转账,只会扣除创建账户消

yqq1997的博客 9707

01-CompressionWebpackPlugin---提高 Web 应用性能的利器

CompressionWebpackPlugin 是一个用于 Webpack 的插件,能够在构建过程中生成压缩文件(例如.gz和.br文件)。这些压缩文件可以显著减少资源文件的大小,从而加快网页的加载速度。浏览器会优先请求这些压缩文件,减少传输数据量,提高页面响应速度。CompressionWebpackPlugin 是一个强大且易于使用的 Webpack 插件,可以显著减少资源文件的大小,提高网页加载速度。

weixin_46002095的博客 3358

波场TRON节点搭建实战:从购买服务器到同步区块数据的完整指南

本文提供波场TRON节点搭建的完整实战指南,涵盖从云服务器选型到区块同步优化的全流程。详细解析FullNode、SolidityNode和轻节点的配置差异,分享阿里云、腾讯云等平台的性能对比及优化建议,并给出安全加固与成本控制策略,帮助开发者高效部署和维护TRON节点。

weixin_29008055的博客 431

Vue项目卡顿慢加载?这些优化技巧告诉你!

前端开发是一个快速发展的领域,每天都会涌现出新的技术和工具。在实现功能的同时,开发人员面临着许多挑战如代码可维护性,加载时间,访问速度,构建速度等问题。这些挑战可能直接影响网站的性能和用户体验,需要采取一些优化措施来改善问题。在本文中,我们将探讨一些前端项目优化的具体措施,旨在帮助开发人员提高项目效率,升级用户体验。综合各方面来说 就是。

web全栈开发的博客 1万+
上一篇: 以太坊 Input Data 解析
下一篇: 以太坊ERC20接口使用
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值