【问题标题】:String parameter not automatically parsing into bytes32 when used with form与表单一起使用时,字符串参数不会自动解析为 bytes32
【发布时间】:2018-03-11 11:52:15
【问题描述】:

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

function issueCertificate(address _recipient, bytes32 _certi_name)

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

issueCertificate("0x0213e3852b8afeb08929a0f448f2f693b0fc3ebe", "random")

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

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

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

【问题讨论】:

    标签: javascript ethereum solidity web3js web3


    【解决方案1】:

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

    web3.utils.asciiToHex("random")

    在此处查看文档:

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

    【讨论】:

      【解决方案2】:

      试试:

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

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

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

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

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

      更新:

      最新版本使用:

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

      【讨论】:

      • javascript中没有“bytes32()”。
      • 对不起,错过了你从 web3 调用它尝试用 web3.fromAscii("random") 包装字符串
      • 谢谢。有效。最新版本是“web3.utils.fromAscii”。
      • 再次弃用 - 按照其他答案的建议使用 web3.utils.asciiToHex
      猜你喜欢
      • 2012-12-06
      • 2021-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多