我正在使用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中创建...
答案 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
他正试图解决它。