与表单一起使用时,字符串参数不会自动解析为 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