Account account = new Account("密钥");
//infura节点+token
var url = “https://mainnet.infura.io/v3/” + dictionaries.First(e => e.Name == "infuraToken").Value;
Web3 web3 = new Web3(account, url);
//Tether contract erc合约地址
var contractAddress = dictionaries.Where(e => e.Name == "usdtReceiverAddress").First().Value;
//Nonce必须要维护 相当于交易自增,要么每次发起交易获取 要么本地维护
//1、2、3、4 BigInt自增 如果跳过去了 将不会发送
//没写 Gas会自动取
TransferFunction transfer = new TransferFunction()
{
To = address,
Value = integer,// 1000000是1
Nonce= Nonce
};
var transferHandler = web3.Eth.GetContractTransactionHandler<TransferFunction>();
string transactionHashTask = String.Empty;
//本地签名,如果直接使用节点发送,infura会出现不广播的情况
var signTransaction = await transferHandler.SignTransactionAsync(contractAddress, transfer);
//推送到节点获取交易哈希
HttpClient blockNumberClient = new HttpClient();
var url = “https://mainnet.infura.io/v3/” + dictionaries.First(e => e.Name == "infuraToken").Value;
string str = @"{""jsonrpc"":""2.0"" ,""method"":""eth_sendRawTransaction"",""params"":[""0x"+ signTransaction + @"""],""id"":""1"" }";
HttpContent content = new StringContent(str);
//var content = new FormUrlEncodedContent(values);
var response = await blockNumberClient.PostAsync(url, content);
var responseString = await response.Content.ReadAsStringAsync();
JObject obj = JsonConvert.DeserializeObject<JObject>(responseString);
string result = obj["result"].ToString();
return result;
.net Core nethereum infura 发送Erc20
最新推荐文章于 2022-10-11 15:26:37 发布