【问题标题】:I would like to recover BNB sent to a contract address我想恢复发送到合约地址的 BNB
【发布时间】:2021-12-29 06:12:43
【问题描述】:

上面是救援bnb代码的图片。我试图营救 bnb,但它无法取回。是不是我做错了什么?

【问题讨论】:

  • 代码看起来不错。你能具体说明“它不可检索”是什么意思吗?请提供重现步骤。
  • 所以当我使用 remix ethereum 时,它告诉我输入 wei amount uint 256。我输入值 1,但 bnb 仍未到达发件人钱包。我可能记错了值吗?
  • 你在 Remix 上使用什么网络? VM 模拟器 - 或者您是否连接到公共网络(例如 BSC 主网)?您是否在同一网络上检查收件人的余额?合同的资金是否至少为 1 wei?
  • 我连接到 BSC 主网,是的,他检查了他的余额,但他还没有收到。你是什​​么意思?也感谢您的回复,我非常感谢您的帮助。
  • 我明白了。那么这是否意味着它已成功返回到发送它的地址?

标签: solidity contract bsc


【解决方案1】:

正如您在 transaction 的 BSCScan 页面上看到的,Input Data 字段为空。这意味着您实际上并没有执行rescueBNB() 函数——至少在这个事务中没有。具体来说,由于该字段为空,因此您在此事务中执行了(空)receive() 函数(docs)。

为了执行rescueBNB(address) 函数,data 字段需要有一个以0x441b1d30 开头的值(函数签名 - 您可以在this answer 中找到有关如何计算签名的更多信息,例如)。

将生产合约加载到 Remix IDE 后,您可以使用带有函数名称的橙色和蓝色按钮来调用其函数(这样实际交易的 data 字段会自动填充,而您不会必须手动计算)。我的猜测是您使用Transact 按钮进行低级交互,从附加(空)字段生成空数据事务。

【讨论】:

    猜你喜欢
    • 2022-01-11
    • 2022-01-16
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多