将参数作为bytes32传递给Solidity Smart Contract

时间:2018-06-06 20:17:03

标签: go ethereum solidity web3 go-ethereum

我正在使用this Ethereum Go Client并尝试将字符串/ bytes32传递给Solidity。

智能合约中的功能非常简单(现在进行测试):

  function vote(bytes32 id) {
    //id has the value 0x0000000000000000000000000000000000000000000000000000000000000000
  }

致电

hash, err := contract.Send(transaction, "vote", "myString")

将导致0x0000000000000000000000000000000000000000000000000000000000000000

表示bytes32 param id ...

我如何将参数传递给Go的智能合约,以便稳固性具有正确的价值?

或者我只需要为该字符串传递一个唯一的标识符,我可以在字符串中轻松地在Golang中创建...

3 个答案:

答案 0 :(得分:1)

我认为你必须对其进行编码

types.ComplexString("myString")

答案 1 :(得分:1)

要将字符串转换为test3 <- read_html("http://cran.r-project.org/web/packages/available_packages_by_name.html") %>% html_node("table") %>% html_attr("href") 以获得可靠性,您只需在Go中创建一个固定长度的字节数组,并将值复制到该字符串中。

bytes32

然后您可以将值传递给智能合约函数:

value := [32]byte{}
copy(key[:], []byte("hello"))

答案 2 :(得分:0)

该软件包的创建者告诉我,原因是这个问题:https://github.com/regcostajr/go-web3/issues/31

他正试图解决它。