首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对我的聪明合同有什么奇怪的要求?

对我的聪明合同有什么奇怪的要求?
EN

Stack Overflow用户
提问于 2022-05-03 15:17:41
回答 3查看 1.1K关注 0票数 4

我正在使用硬帽子黑客马拉松样板,并调用我的智能合同的(地址1c0,地址缩写为清晰)的功能MyContract#addProduct从UI通过ethers.js。

问题是:在调用我的addProduct函数之前和之后,我都会看到一些奇怪的函数调用。执行这些奇怪呼叫的帐户(266)是HH在开始时生成的第一个地址。MyContract部署在1c0。

下面是来自硬件节点终端的日志,在//之后有我的注释。

这些电话是什么?它们是从哪里来的?

UPDATE: --我朋友的一个建议,它可以是MetaMask为任何目的查询智能合同。还会调查的。

代码语言:javascript
复制
// I don't know who's calling it
eth_call 
  Contract call:       MyContract#<unrecognized-selector>
  From:                266
  To:                  1c0

// My fallback is logging
  console.log:
    MyContract: Fallback called 

// I don't know who's calling it
eth_call
  Contract call:       MyContract#symbol
  From:                266
  To:                  1c0

// I don't know who's calling it
eth_blockNumber
eth_getBalance (3)
eth_call
  WARNING: Calling an account which is not a contract
  From:                266
  To:                  e86

// This is what I call from UI
eth_getTransactionCount
eth_blockNumber
eth_sendRawTransaction 
  Contract call:       MyContract#addProduct
  Transaction:         740
  From:                5ab
  To:                  1c0
  Value:               0 ETH
  Gas used:            414218 of 414218
  Block #23:           925

  console.log:
    MyContract:addProduct()

eth_getTransactionReceipt
eth_blockNumber
eth_getTransactionReceipt
eth_blockNumber
eth_getBlockByHash

// I don't know who's calling it
eth_call
  Contract call:       MyContract#<unrecognized-selector>
  From:                266
  To:                  1c0

  console.log:
    MyContract: Fallback called

// I don't know who's calling it
eth_call 
  Contract call:       MyContract#<unrecognized-selector>
  From:               266
  To:                 1c0

  console.log:
    MyContract: Fallback called
EN

回答 3

Stack Overflow用户

发布于 2022-05-14 01:57:37

经过进一步研究,我相信元问题自动调用了EIP165 "supportsInterface“函数。

我在合同中添加了一些console.log,发现它们匹配检查我的合同是否支持ERC721接口、ERC721元数据接口和ERC1155接口。

在我的本地硬帽子开发中,这些未处理的调用非常烦人,有些令人感到不安,我也不完全理解元请求为什么需要这样做。

票数 3
EN

Stack Overflow用户

发布于 2022-08-25 13:44:05

添加

代码语言:javascript
复制
    receive() external payable {} // to support receiving ETH by default
    fallback() external payable {}

合同就会让那些原木消失。

在您的情况下,或者在一般情况下,任何人都可以为您尚未定义的函数调用契约,而fallback将捕获它们。

如果调用方打算调用不可用的函数,则执行fallback函数。您还可以使用它的输入参数来查看所调用的内容,然后采取特定的操作。这里的文件:

https://docs.soliditylang.org/en/v0.8.12/contracts.html#fallback-function

票数 1
EN

Stack Overflow用户

发布于 2022-05-03 19:16:19

“硬帽黑客马拉松样板”的前端应用程序定义的周期性检查- 查询令牌平衡每秒钟。

假设您的契约没有实现balanceOf(address)函数,则调用将重定向到fallback()函数。

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

https://stackoverflow.com/questions/72101643

复制
相关文章

相似问题

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