本文章主要通過將ETH錢包地址轉換成TRX地址實現,也就是說ETH怎么用HdWallet的通過轉換地址的方式在TRX也能用,私鑰也是。
主要用到了以下nuget包
- Nethereum.Hex
- Nethereum.HdWallet
- Tron.Net.Client
核心代碼:
public static string GetBase58CheckAddress(string ethAddress) { string fixaddress = "0x41" + ethAddress.RemoveHexPrefix(); byte[] addressBytes = fixaddress.HexToByteArray(); byte[] hash0 = SHA256(addressBytes); byte[] hash1 = SHA256(hash0); var checkSum = hash1.Take(4).ToArray(); return Base58.Encode(addressBytes.Concat(checkSum).ToArray()); } public static byte[] SHA256(byte[] data) { using (var sha256 = new SHA256Managed()) { return sha256.ComputeHash(data); } }
示例:
//生成助記詞 Mnemonic mnemonic = new Mnemonic(Wordlist.English, WordCount.Twelve); //使用助記詞 Nethereum.HdWallet.Wallet wallet = new Nethereum.HdWallet.Wallet(mnemonic.ToString(), "助記詞密碼"); for (int i = 0; i < 5; i++) { //移除私鑰的0x開頭 string privateKey = wallet.GetAccount(i).PrivateKey.RemoveHexPrefix();
string address = GetBase58CheckAddress(wallet.GetAccount(i).Address); Console.WriteLine("TRX地址:{0},私鑰:{1}", address, privateKey); }
生成5個ETH地址和對應的私鑰,然后把ETH地址轉換成TRX
結果:
TRX地址:TREyTqjmzjBFqnWGQZ1q1G2WpGmz7dvbPm,私鑰:d687aced7f1c9fc47587b87a457b876b768377e8524b9243a7643ce2be90f938 TRX地址:TQs6vEqL4Vf4ckzmeXWi4q1p5VevkA5Yxi,私鑰:c0eb70683e9aeb077286384ed94b9ae8c55d64b6ccd87fa460c932d7aa38c373 TRX地址:THAG1RcHvM6AQzJsPYxuV5PNYrUsfYvMBh,私鑰:bfc0e0185ea3b1fdc861af0b44545a1fb7b42a7defda709fc8e92391654d1fe2 TRX地址:TKnmzam2uj6SQ1kUpkEbUDN81Rct9PdQ4z,私鑰:96d6ff282991c7700aae0ed132ae598c5325a53e63c71eb8a9749d7626fdee23 TRX地址:TE6S8h3cuxhWkfd7JBGU99vghq4bBJiK6i,私鑰:efbb87c615e1a243e770eaedc4d473ab5586f5751b75104615e2415dc1670c66