Я использую этот клиент Ethereum Go и пытаюсь передать строку / bytes32 в Solidity.
Функция в смарт-контракте очень проста (сейчас для тестирования):
function vote(bytes32 id) {
//id has the value 0x0000000000000000000000000000000000000000000000000000000000000000
}
вызов
hash, err := contract.Send(transaction, "vote", "myString")
приведет к 0x0000000000000000000000000000000000000000000000000000000000000000
для идентификатора параметра bytes32 ...
Как мне передать параметр в свой смарт-контракт из Go, чтобы твердость имела правильное значение?
В качестве альтернативы мне просто нужно передать уникальный идентификатор для этой строки, который я могу легко создать в Golang из строки ...

Я думаю, тебе нужно это закодировать
types.ComplexString("myString")
Чтобы преобразовать строку в bytes32 для надежности, все, что вам нужно сделать, это создать массив байтов фиксированной длины в Go и скопировать в него строку и значение.
value := [32]byte{}
copy(key[:], []byte("hello"))
Затем вы можете передать значение функции смарт-контракта:
hash, err := contract.Send(transaction, "vote", value)
Создатель пакета сказал мне, что причина в этой проблеме: https://github.com/regcostajr/go-web3/issues/31
Он пытается ее решить.