У меня есть простые смарт-контракты (Store.sol) с функцией set и get:
contract Store {
bytes storedParams;
function setParams(bytes memory input1) public {
storedParams = input1;
}
function getParams() public view returns (bytes memory) {
return storedParams;
}
}
У меня есть другое развертывание. go код, который вызывает функцию для установки значения, а также получить значение. Функция setParams () работает нормально, а транзакция также добывается. Я проверил из консоли geth. Тем не менее, при вызове функции getParams () я получаю сообщение об ошибке "pani c: abi: попытка разобрать пустую строку, пока ожидаются аргументы"
Развертывание. go код, как показано ниже:
func CommContract(paramsByte []byte) {
gethPath, nodeKey := functions.GethPathAndKey()
connection, err := ethclient.Dial(gethPath)
functions.CheckError(err)
fmt.Println("connection Returned: ", connection)
ctx := context.Background()
gasPrice, err := connection.SuggestGasPrice(ctx)
functions.CheckError(err)
auth, err := bind.NewTransactor(strings.NewReader(nodeKey), "account1")
functions.CheckError(err)
auth.GasLimit = uint64(300000) // in units
auth.GasPrice = gasPrice
addr, tx, instContract, err := store.DeployStore(auth, connection)
functions.CheckError(err)
fmt.Println("addr Returned: ", addr)
fmt.Println("instContract Returned: ", instContract)
pairing, err := pbc.NewPairingFromString(string(paramsByte))
g := pairing.NewG1().Rand()
fmt.Println("g=",g)
// Write contract address to file for other app reference
functions.FileCrWr("./tmp/contractInfo/contract-address", []byte(addr.Hex()))
_, err = bind.WaitMined(ctx, connection, tx)
functions.CheckError(err)
tx1, err := instContract.SetParams(auth, paramsByte)
functions.CheckError(err)
fmt.Println("tx1=",tx1.Hash().Hex())
_, err = bind.WaitMined(ctx, connection, tx1)
functions.CheckError(err)
GetparamsByte, err := instContract.GetParams(nil)
functions.CheckError(err)
fmt.Println("\nGetParams() Returned: ", GetparamsByte)
}
func main() {
// create ./tmp/ folder for storing secrets information of parties and public parameters
functions.Createtmp()
params := pbc.GenerateA(160, 512)
CommContract([]byte(params.String()))
}
Кто-нибудь знает, как решить эту ошибку? Где что-то не так?