首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交易气体问题稳健性

交易气体问题稳健性
EN

Ethereum用户
提问于 2021-05-25 14:26:34
回答 1查看 98关注 0票数 0
代码语言:javascript
复制
 function x(uint256 _value) public {
    limit += _value;
    if(limit >= 5){
    myMethod();
    limit = 0;
    }
 }

我有一个类似的方法(x函数)。如果限制较小,那么5一切都可以,但最后一个调用方(例如,合同有3,他将发送2-3值)将继续执行if语句,并运行myMethod();因此,最后一个调用者应该支付比其他调用者更多的煤气费。myMethod();是通过导入和提供合同地址从另一个合同调用另一个方法。(这是不是意味着更多的汽油?)

我想要做的是,如果代码继续下去,如果我想支付myMethod()的煤气费,那有可能吗?

代码语言:javascript
复制
  function x(uint256 _value) public {
    limit += _value;
    if(limit >= 5){
    msg.sender = address(this); // or msg.sender = owner;
    myMethod();
    limit = 0;
    }
  }

或者我可以在不调用合同的情况下创建自动功能。直接:

代码语言:javascript
复制
if(limit>=5){
myMethod();
}

如果没有方法,直接调用合同//我知道这是不可能的,但有什么不同的方法吗?

EN

回答 1

Ethereum用户

发布于 2021-05-25 23:23:28

此属性为只读属性。你不能设置。寄件人总是付钱买汽油。

代码语言:javascript
复制
msg.sender = address(this); // or msg.sender = owner;

您有一个可变的执行成本,但该规则仍然适用。发货人付汽油费。

代码语言:javascript
复制
myMethod(); is calling another method from another contract with importing and giving contract address. (is it mean more gas?)

是不是意味着更多的汽油?

稍微多一点。在双方都有包装论点、回复和解压、查找对方合同地址等方面的操作,但如果外国合同的地址是硬编码的,这些操作大多是廉价的。如果需要从存储器中读取地址,请提供更多信息。

天然气成本的不平衡是许多合同的一个因素。分支机构就是这么做的。一般来说,要注意分发的公平性,但不要对它感到困扰,因为如果需要额外的工作,用户通常完全可以接受多付一点钱。

通常不可能预先知道确切的成本,因为客户无法知道他们在挖掘的交易顺序中所处的位置。如果用户A、B、C、D和E多或少同时发送事务,且gasPrice相等,则任何特定事务进入第五位的几率大致相等。这对那些试图根据“模拟模拟”估算gasPrice的客户端来说是一个挑战--实际成本不是取决于当前的条件,而是取决于挖掘交易的条件。这可能导致事务中止。

明智的做法是,在最坏的情况下,加注一些额外的天然气。客户端事务对象可以包含{ gas: amount }。你可以把它设置为最坏的情况--以确保总是有足够的情况。任何多余的气体总是返回给用户。大多数用户会以MetaMask等展示的气体作为福音,并意识到退款已经发生,所以你通常会想要最低可行的填充。

希望能帮上忙。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/99642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档