как вызвать функцию смарт-контракта в ядре С#.net

protected async void Page_Load(object sender, EventArgs e)
        {
            var senderAddress = "0x605a1f8d368cbdd4d0a5cbad74f75c428660f17b";
            var password = "zxcasdqwe123";
            var abi = @"[{""constant"":false,""inputs"":[{""name"":""passAddress"",""type"":""address""}],""name"":""isWhitelisted"",""outputs"":[{""name"":"""",""type"":""bool""}],""payable"":false,""type"":""function""},{""constant"":false,""inputs"":[{""name"":""userAddress"",""type"":""address""}],""name"":""userAdd"",""outputs"":[],""payable"":false,""type"":""function""},{""inputs"":[],""payable"":false,""type"":""constructor""}]";
            var web3 = new Nethereum.Web3.Web3();
            var newAddress = "0xE96932536293CF4712180973c6201DDbDf6fa3C0";
            /*var unlockAccountResult = await web3.Personal.UnlockAccount.SendRequestAsync(senderAddress, password, new HexBigInteger(120));
            Assert.True(unlockAccountResult);
            */
            //var transactionHash = await web3.Eth.DeployContract.SendRequestAsync(abi, byteCode, senderAddress, newAddress);
            //var receipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash);
            //while (receipt == null)
            //{
            //    Thread.Sleep(5000);
            //    receipt = await web3.Eth.Transactions.GetTransactionReceipt.SendRequestAsync(transactionHash);
            //}
            //var contractAddress = receipt.ContractAddress;
            var contract = web3.Eth.GetContract(abi, "0x23699275461c4755377c293bb657e84d3ddfdbd9");
            var fucntion = contract.GetFunction("userAdd");
            var result = await fucntion.CallAsync<String>("0xE96932536293CF4712180973c6201DDbDf6fa3C0");
        }

Я развернул свой контракт на rinkeby и получил адрес, и теперь я звоню в свою функцию моего контракта, но он показывает мне ноль.

помогите спасибо заранее

всегда маскируйте пароли, когда публикуете здесь материалы!
Вы когда-нибудь получали ответ на этот вопрос? Если это так, пожалуйста, поделитесь.
Это на самом деле не отвечает на вопрос. Если у вас есть другой вопрос, вы можете задать его, нажав Задать вопрос . Вы также можете добавить вознаграждение , чтобы привлечь больше внимания к этому вопросу, когда у вас будет достаточно репутации . - Из обзора

Ответы (1)

Судя по вашему ABI, у функции нет выходных параметров userAdd?

Если вы пытаетесь отправить транзакцию для изменения состояния, вы должны использовать function.SendTransactionAsync(...)неCallAsync

От транзакции не будет возвращено никакого значения. Проверьте статус в квитанции.

Кроме того, в зависимости от версии Nethereum, которую вы используете, вам может потребоваться сначала разблокировать отправляющую учетную запись.

ХТН