4

我有一个看起来像这样的solidity函数-

function issueCertificate(address _recipient, bytes32 _certi_name)

当我使用 truffle 控制台调用该函数时,我可以使用 -

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", "random")

但是当我使用 web3 和具有相同数据的字符串格式的表单运行它时,它会给出错误-

错误:给定参数不是字节:“随机”

我想我在这里缺少一些基本的东西。请帮忙。

4

2 回答 2

3

尝试:

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

基本上,用 bytes32() 包装字符串

编辑,错过了来自 Web3 的呼叫尝试:

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

基本上,在 Web3 中用 web3.fromAscii() 包装字符串

更新:

最新版本使用:

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", web3.utils.fromAscii("random"))
于 2017-09-29T14:43:45.690 回答
3

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

web3.utils.asciiToHex("random")

请参阅此处的文档:

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

于 2017-10-13T03:29:02.137 回答