using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Crypto.Parameters;
using Org.BouncyCastle.Security;
public class KeyPairGenerator
{
public static AsymmetricCipherKeyPair GenerateKeyPair()
{
var keyGenerationParameters = new KeyGenerationParameters(new SecureRandom(), 256);
var keyPairGenerator = GeneratorUtilities.GetKeyPairGenerator("ECDSA");
keyPairGenerator.Init(keyGenerationParameters);
return keyPairGenerator.GenerateKeyPair();
}
}
public static string GenerateAddress(string publicKey)
{
var keyBytes = HexToByte(publicKey);
var sha256 = new SHA256Managed();
var hash = sha256.ComputeHash(keyBytes);
// RIPEMD-160
var ripemd160 = new Ripemd160Managed();
var addressBytes = ripemd160.ComputeHash(hash);
// Base58Check编码(省略具体实现)
return Base58CheckEncode(addressBytes);
}
public class Transaction
{
public string FromAddress { get; set; }
public string ToAddress { get; set; }
public decimal Amount { get; set; }
public DateTime Timestamp { get; set; }
}
然后维护一个交易历史的列表:
public class Wallet
{
private List transactions = new List();
public void AddTransaction(Transaction transaction)
{
transactions.Add(transaction);
}
public List GetTransactionHistory()
{
return transactions;
}
}
using System.Net.Http;
public class BitcoinNetwork
{
private static readonly HttpClient client = new HttpClient();
public async Task GetTransaction(string txId)
{
var response = await client.GetStringAsync($"https://api.blockcypher.com/v1/btc/main/txs/{txId}");
return response;
}
}
通过上述代码,可以获取发送到 заданный ID 的交易的详细数据,验证是否到账,真是挺有意思的功能!