【问题标题】:In Solidity smart contracts, what variables can be made dynamic?在 Solidity 智能合约中,哪些变量可以动态化?
【发布时间】:2022-01-08 12:45:28
【问题描述】:

我了解智能合约在部署后是不可变的。但是你如何改变铸币价格、汽油价格等事情呢?是否有可以写成动态的变量,以便通过管理面板实现更新?

【问题讨论】:

  • gas 价格不能在合约上更改,因为它们不依赖于合约,gas 价格是每单位计算能力的价格,它取决于网络拥塞等多种因素,但历史悠久简而言之,如果您想稍后更改某些内容,则它需要是一个变量并具有一个 setter 函数,否则您将需要使用代理
  • 添加到@jhonny 评论 首先,您需要了解您支付的gas 价格本质上是支付给开采区块的矿工的tx 费用。用户可以为他们发送的每笔交易设置 gas 价格,但如果它比网络的当前平均 gas 价格太低,矿工最终将不会将您的交易添加到他们的区块中,它将保留在 mempool 中(哪些 txs 不是尚未添加到任何实时块中)太长并最终被拒绝
  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。
  • @hassanahmed 谢谢兄弟。你有我可以关注的区块链项目吗?

标签: blockchain ethereum solidity bsc


【解决方案1】:

要更改变量,您需要实现 setter 方法。

uint256 public mintCost = 0.05 ether;

function setCost(uint256 _newCost) public onlyOwner {
        mintCost = _newCost;
 }

上面的代码初始化了一个状态变量,可以用作代币的铸造成本,函数setCost用于更新它的值。还要注意 onlyOwner 这意味着功能仅限于合同所有者使用。你可以从solidity docs阅读更多关于函数修饰符的信息

如果您使用的是 remix IDE,则在发送交易时设置 Gas 价格,它允许您为每笔交易设置 Gas 价格。

【讨论】:

    猜你喜欢
    • 2022-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    • 2018-11-26
    • 2022-12-06
    • 2022-08-10
    相关资源
    最近更新 更多