与表单一起使用时,字符串参数不会自动解析为 bytes32
String parameter not automatically parsing into bytes32 when used with form
我有一个看起来像这样的 solidity 函数-
function issueCertificate(address _recipient, bytes32 _certi_name)
当我使用 truffle 控制台调用函数时,我可以 运行 使用-
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", "random")
但是当我 运行 它使用 web3 和具有相同字符串格式数据的表单时,它给出了错误-
Error: Given parameter is not bytes: "random"
我想我在这里遗漏了一些基本的东西。请帮忙。
尝试:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", bytes32("random"))
基本上,用 bytes32()
包裹字符串
编辑,错过了从 Web3 发出的呼叫尝试:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.fromAscii("random"))
基本上,在 Web3 中用 web3.fromAscii()
包裹字符串
更新:
最新版本使用:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.utils.fromAscii("random"))
如果您使用的是 web3.js 1.0 版,您可以将字符串换行,如下所示:
web3.utils.asciiToHex("random")
在此处查看文档:
https://web3js.readthedocs.io/en/1.0/web3-utils.html#asciitohex
我有一个看起来像这样的 solidity 函数-
function issueCertificate(address _recipient, bytes32 _certi_name)
当我使用 truffle 控制台调用函数时,我可以 运行 使用-
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", "random")
但是当我 运行 它使用 web3 和具有相同字符串格式数据的表单时,它给出了错误-
Error: Given parameter is not bytes: "random"
我想我在这里遗漏了一些基本的东西。请帮忙。
尝试:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", bytes32("random"))
基本上,用 bytes32()
包裹字符串编辑,错过了从 Web3 发出的呼叫尝试:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.fromAscii("random"))
基本上,在 Web3 中用 web3.fromAscii()
包裹字符串更新:
最新版本使用:
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.utils.fromAscii("random"))
如果您使用的是 web3.js 1.0 版,您可以将字符串换行,如下所示:
web3.utils.asciiToHex("random")
在此处查看文档:
https://web3js.readthedocs.io/en/1.0/web3-utils.html#asciitohex