字符串参数与形式一起使用时不会自动解析为字节32



我的坚固函数看起来像这样 -

function issueCertificate(address _recipient, bytes32 _certi_name)

当我使用松露控制台调用该功能时,我可以使用 -

运行它
issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", "random")

但是,当我使用web3和以字符串格式的相同数据形式运行它时,它会产生错误 -

错误:给定的参数不是字节:"随机"

如果您使用的是Web3.js版本1.0,则可以包装字符串,如下所示:

web3.utils.asciiToHex("random")

请参阅此处的文档:

https://web3js.readthedocs.io/en/1.0/web3-utils.html#asciitohex

尝试:

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", bytes32("random"))

基本上,将字符串用Bytes32()

包裹

编辑,错过了由Web3拨打的电话:

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.fromAscii("random"))

基本上,在Web3中,用Web3.fromascii()

将字符串包裹起来

更新:

最新版本用途:

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.utils.fromAscii("random"))

最新更新