Metamask 'Contract Interaction' 定义函数的标签?

Metamask 'Contract Interaction' label for defined function?

使用 metamask,我有这两个函数,它们(大部分)对智能合约的调用几乎相同:

  localContract.methods
    .presaleMint(window.ethereum.selectedAddress, ipfs)
    .send({ 
      from: window.ethereum.selectedAddress,
      value: web3.utils.toWei(price * amount + "", "ether"),
      gas: 240000 * (100 - amount * 4) / 100 * amount
    })
  localContract.methods.togglePresale().send({ 
    from: window.ethereum.selectedAddress,
    gas: 800000
  })

我看到的主要区别是第一个函数有参数。

但我的问题是,为什么 metamask 给出第二个调用函数的名称,而不是第一个? (先只显示'Contract Interaction')

我可以看到这是在 git 年前在 metamask 上提出的,我很惊讶它仍然是这样设置的...... https://github.com/MetaMask/metamask-extension/issues/8835

MetaMask 使用字典将函数选择器(0xdata 字段的前 8 个十六进制字符)翻译成 human-readable 名称。

如果 MM 在字典中找不到函数选择器,他们会使用通用标签“合约交互”。

如何将您的函数选择器(属于 presaleMint() 函数)添加到他们的词典中:https://docs.metamask.io/guide/registering-function-names.html#verify