How to interact with "transfer" method of contract. .NET

Hello guys, i don’t understand how to interact with “transfer” method. I saw in documents how to interact with simplest call method, but how to transfer my tokens contract - no info.

I do it like this

var privateKey = “”;
var w3 = new Web3(“https://openapi2.platon.network/rpc”, privateKey);

var abi = @"[]";
var contractAddress = “”; // 13
var contract = w3.PlatON.GetContract(abi, contractAddress); // 14
var name = contract.GetFunction(“symbol”).Call(); // 15
var toAddress = “”;
Console.WriteLine(name); // 16

var hexAddress = ConvertLatToHex(toAddress);
var gasLimit = new HexBigInteger(90000);

var transferResult = await contract.GetFunction(“transfer”).SendTransactionAsync(
from: “lat1auhyy5lgwsvlwn35lg2rkx2e5u6lqu9ufjd7kv”,
gas: gasLimit,
gasPrice: null,
value: new BigInteger(10000).ToHexBigInteger(),
nonce: null,
hexAddress, new BigInteger(1000000) ); // 17

And i got failure of my transaction

I made a transaction with success status, but i don’t understand where i should put amount of my tokens to transfer?

I always get 0 tokens for transfer

var contractAddress = new Address(""); // 13
var contract = w3.GetContract(abi, contractAddress.ToEthereumAddress()); // 14
var name = await contract.GetFunction(“symbol”).CallAsync(); // 15
var gasLimit = new HexBigInteger(90000);
ulong gasPrice = 1000000000;
var amount = new HexBigInteger(10000);
var chainId = new HexBigInteger(210425);

var toAddress = “”;
var fromAddress = “”;
var hexAddressTo = ConvertLatToHex(toAddress);
var hexAddressFrom = ConvertLatToHex(fromAddress);
var sender = new Address(fromAddress);
var reciever = new Address(toAddress);

var nonceNum = w3.PlatON.GetTransactionCount(sender.ToString());
var transferFunction = contract.GetFunction(“transfer”);

Console.WriteLine(name); // 16

var gas = transferFunction.EstimateGasAsync(sender.ToEthereumAddress(), null, null, hexAddressTo, amount.Value);
gas.Wait();
var input = transferFunction.CreateTransactionInput(sender.ToEthereumAddress(), gas.Result, null, null, hexAddressTo, 10000);
var data = input.Data;
Transaction tx = new Transaction(contractAddress.ToString(), null, nonceNum, gasPrice.ToHexBigInteger(), gas.Result, data, chainId);
var platonKey = new Account(privateKey);
tx.Sign(platonKey);
var result2 = w3.PlatON.SendRawTransaction(tx.SignedTransaction.ToHex());

Sorry guys. After 3 days i got, that i can’t send too small values)

1 个赞