| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 区块链 -> Filecoin Gas设置在钱包应用实现中的设计 -> 正文阅读 |
|
[区块链]Filecoin Gas设置在钱包应用实现中的设计 |
1 EIP-1559Filecoin Gas设置引入了EIP1559方案,并将其纳入了其核心协议。EIP-1559是Vitalik于2019年提出的以太坊改进方案,它旨在提高以太坊费用市场的效率。 在区块链的网络中,GAS的概念被用来衡量执行特定链上交易所需的计算资源。在以往的区块链实现中,一般将gas费全部激励给矿工,gas费是gas price * gas limit乘积计算而来。在发送消息时,用户需要设置gas的使用量gas limit 和消耗的燃料价格 gas price,gas limit设置过低会导致消息失败,gas price则会影响消息上链的效率,矿工会优先打包提供了更高价格的消息。 EIP-1559其主要创新之处在于引入了与每个区块相关的base fee(每单位Gas的价格)。该费用会根据网络拥堵情况而上升和下降,将网络流量维持到目标水平。在此机制下,发送消息所消耗的费用,除了激励给矿工的,还有一部分会反补网络予以销毁。之所有采用这样的设计,会提高网络效率,至于为什么我们不做探讨,我们这里探讨一下这个规则本身。 2 手续费相关的参数2.1 BasFeeEIP-1559通过追踪最低的gas费来实现这一点,最低的gas费即BASE FEE,被记录在每个区块中。当一个区块所用容量超过一定数量时,BASE FEE会上升,而当一个区块所用容量低于一定数量时,BASE FEE会下跌。 2.2 GasFeeCap交易创建者指定的一个费率上限(他们愿意为将该交易打包在内而支付的每单位Gas的最高价格)。当价格上限低于一个区块的base fee时,该区块就不能被打包在内。 2.3 GasPremium交易创建者还指定的一个小费费率(也是每单位Gas的价格);这个小费由区块矿工收取。 2.4 GasLimit交易创建者指定的Gas数量上限,设置较高的gaslimit将会面临更多的超额燃烧,设置过低会影响消息的成功率。 2.5 GasUsed交易被区块打包时,真正消耗的gas数量。 3 手续费的构成3.1 基础燃烧基础燃烧的部分将补偿整个网络为执行交易而消耗的资源,该部分将会被销毁。 计算公式:BaseBurnt = BaseFee * GasUsed 3.2 矿工小费矿工小费由区块矿工收取。 计算公式:MinerTips = min (GasFeeCap - GasPremium,GasPremium)* GasUsed 3.3 超额燃烧超额燃烧是因交易创建者设置了较高的gas数量而带来的网络资源消耗的补偿,该部分也将会被销毁。 计算公式:OverBurnt = BaseFee * (GasLimit - GasUsed)*(GasLimit - GasUsed *1.1)/GasUsed 4 钱包的Gas参数设置方案4.1 Gas参数推荐在上述手续费相关的5个参数中,BaseFee为区块信息,GasUsed为交易实际发生的Gas消耗数量,均为已知或未来已知的参数。另外的3个参数,由交易创建者在发送交易时设定。 在Filecoin网络中,节点提供了4个获取预估值的接口:
通过节点获取预估参数值,但会存在网络连接上的问题,当节点连接延迟时,会降低用户体验。 为了避免网络连接问题,FiveToken在实现交易时,提供了基于ChainInfo(一个同步链数据的基础服务)的数据支持,提供手续费设置的推荐值。取值规则如下:
4.2 To地址的Gaslimit设置当to地址为新地址时,将会消耗更多的gas,根据数据统计,这种情况下,gasused在2100000上下,不超过2200000。在实现时,采用了2200000的推荐值,很好地解决to地址为新地址时,经常发生的交易失败的问题。 4.3 多签消息的参数设置多签功能在实现时,遇到了批准消息失败的问题,通过调查,同一高度的多签批准消息使用了不同的手续费参数。分析原因为不同的提案类型,批准消息时,会消耗不同的gas费用,就需要采用不同的gas费参数。 因批准消息的提案信息需要解析,暂没有可用于分析的数据,该项目工作在进行中。当前情况,批准消息采用的手续费参数临时方案为:将GasLimit推荐值设置为20000000。针对这一个情况,还需要更多的数据分析支持,以实现既可以高效的发送消息又可以减少超额燃烧降低交易成本。 关于gas设置优化需要搞清楚的问题:网络的推荐值的算法是怎样的?不同消息类型的手续费消耗从代码实现上有什么区别? 附 EIP-1559 https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1559.md |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:46:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |