При вызове функции get из контракта smat выдается ошибка: pani c: abi: попытка демонтировать пустую строку, пока ожидаются аргументы - PullRequest
0 голосов
/ 13 апреля 2020

У меня есть простые смарт-контракты (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()))
}

Кто-нибудь знает, как решить эту ошибку? Где что-то не так?

...