通过区块浏览器在哪里获得智能合约交互的签名?
Posted
技术标签:
【中文标题】通过区块浏览器在哪里获得智能合约交互的签名?【英文标题】:Where to get a signature for smart contract interaction via block explorer? 【发布时间】:2022-01-15 16:52:07 【问题描述】:在 BSC(Binance 智能链)合约中,我经常遇到 signature
参数,但我不知道从哪里得到它。
如果您认为这是您需要使用 Metamask 签名的签名消息 - 它不是。这只是我需要运行的函数的一个参数。
可以在此处找到示例,只需查看 purchase
函数,您就会看到 signature
作为最后一个参数 - https://bscscan.com/address/0xabc306ae80595f6c7748b81d6c2efc48b32a9e22#writeContract
【问题讨论】:
【参考方案1】:签名是使用私钥对消息进行签名的结果。
示例来自网络3docs page:
留言Hello world
使用地址0x11f4d0A3c12e86B4b5F39B213F7E19D048276DAe
的私钥签名
签名结果0x30755ed65396facf86c53e6217c52b4daebe72aa4941d89635409de4c9c7f9466d4e9aaec7977f05e923889b33c0d0dd27d7226b6e6f56ce737465c5cfd04be400
然后,合约可以验证签名和消息(或消息的哈希)是否可以恢复到签名者地址(无法获取私钥)。
例如,OpenZeppelin ECDSA 库是低级(EVM 程序集)恢复方法的开发人员友好型包装器。
不幸的是,问题中链接的合同正在将签名传递给另一个未指定的合同进行恢复,因此我无法找到他们正在验证的具体消息以及他们正在使用的实际恢复 sn-p。但是,您可以在this answer 中找到有关签名过程和链上恢复的更多信息(提到的v
、r
和s
参数实际上是整个签名的一部分)。
【讨论】:
以上是关于通过区块浏览器在哪里获得智能合约交互的签名?的主要内容,如果未能解决你的问题,请参考以下文章
Web3 开发系列教程—创建你的第一个智能合约将你的智能合约发布到 Etherscan