我已经用了很多资源来尝试找到这个答案,但是简单地说,如何创建一个钱包或将Ethereum Blockchain
集成到C#中?有许多技术,例如Web3.js
,MyEtherWallet
(也包括js)和Nethereum
,它们是C#,但使用Infura作为API调用。还有一个名为blockcypher.com
您如何创建一个以太坊钱包,该钱包对转账资金是公开的?终点是什么?
我要做的是使用我的Web应用程序为每个用户以编程方式创建一个钱包,当他们赚取积分时,我再次希望以编程方式将资金从我的钱包转移到用户的钱包中。
任何建议将不胜感激
预先感谢
答案 0 :(得分:0)
以下是使用Nethereum的示例:
string password = "MYSTRONGPASS";
EthECKey key = EthECKey.GenerateKey();
byte[] privateKey = key.GetPrivateKeyAsBytes();
string address = key.GetPublicAddress();
var keyStore = new KeyStoreScryptService();
string json = keyStore.EncryptAndGenerateKeyStoreAsJson(
password: password,
privateKey: privateKey,
addresss: address);
json
可以存储在文件中。 Mist使用了这种文件格式。
答案 1 :(得分:0)
尝试Nethereum,您可以使用任何rpc端点,而不仅仅是Infura。这与Web3js,MyEtherWallet,Web3j等相同。
显然,您将需要一个像Geth,Parity或Besu之类的节点运行。
这是在Nethereum的公共测试链中转移以太坊的示例。
您还可以将其与@LOST响应结合使用KeyStore标准对私钥进行加密和解密。
您可以在Nethereum Playground http://playground.nethereum.com/csharp/id/1003中运行此示例。
using System;
using System.Text;
using Nethereum.Hex.HexConvertors.Extensions;
using System.Threading.Tasks;
using Nethereum.Web3;
using Nethereum.Web3.Accounts;
public class Program
{
private static async Task Main(string[] args)
{
//First let's create an account with our private key for the account address
var privateKey = "0x7580e7fb49df1c861f0050fae31c2224c6aba908e116b8da44ee8cd927b990b0";
var account = new Account(privateKey);
Console.WriteLine("Our account: " + account.Address);
//Now let's create an instance of Web3 using our account pointing to our nethereum testchain
var web3 = new Web3(account, "http://testchain.nethereum.com:8545");
// Check the balance of the account we are going to send the Ether
var balance = await web3.Eth.GetBalance.SendRequestAsync("0x13f022d72158410433cbd66f5dd8bf6d2d129924");
Console.WriteLine("Receiver account balance before sending Ether: " + balance.Value + " Wei");
Console.WriteLine("Receiver account balance before sending Ether: " + Web3.Convert.FromWei(balance.Value) +
" Ether");
// Lets transfer 1.11 Ether
var transaction = await web3.Eth.GetEtherTransferService()
.TransferEtherAndWaitForReceiptAsync("0x13f022d72158410433cbd66f5dd8bf6d2d129924", 1.11m);
balance = await web3.Eth.GetBalance.SendRequestAsync("0x13f022d72158410433cbd66f5dd8bf6d2d129924");
Console.WriteLine("Receiver account balance after sending Ether: " + balance.Value);
Console.WriteLine("Receiver account balance after sending Ether: " + Web3.Convert.FromWei(balance.Value) +
" Ether");
}
}
您有许多使用Nethereum的以太坊钱包示例,可以在http://docs.nethereum.com/en/latest/nethereum-ui-wallets/
中找到