function x(uint256 _value) public {
limit += _value;
if(limit >= 5){
myMethod();
limit = 0;
}
}我有一个类似的方法(x函数)。如果限制较小,那么5一切都可以,但最后一个调用方(例如,合同有3,他将发送2-3值)将继续执行if语句,并运行myMethod();因此,最后一个调用者应该支付比其他调用者更多的煤气费。myMethod();是通过导入和提供合同地址从另一个合同调用另一个方法。(这是不是意味着更多的汽油?)
我想要做的是,如果代码继续下去,如果我想支付myMethod()的煤气费,那有可能吗?
function x(uint256 _value) public {
limit += _value;
if(limit >= 5){
msg.sender = address(this); // or msg.sender = owner;
myMethod();
limit = 0;
}
}或者我可以在不调用合同的情况下创建自动功能。直接:
if(limit>=5){
myMethod();
}如果没有方法,直接调用合同//我知道这是不可能的,但有什么不同的方法吗?
发布于 2021-05-25 23:23:28
此属性为只读属性。你不能设置。寄件人总是付钱买汽油。
msg.sender = address(this); // or msg.sender = owner;您有一个可变的执行成本,但该规则仍然适用。发货人付汽油费。
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等展示的气体作为福音,并意识到退款已经发生,所以你通常会想要最低可行的填充。
希望能帮上忙。
https://ethereum.stackexchange.com/questions/99642
复制相似问题