以太坊SmartWallet.Net開發包適用於平臺方高效完成對用戶地址上的Ether/ERC20代幣的歸集工作,無需向用戶地址注入Ether即可完成Ether/ERC20代幣的歸集。官方下載地址:以太坊智能錢包.Net開發包
1、開發包概述
以太坊SmartWallet.Net開發包的主要特點如下:
- 真正的平臺型非託管錢包,平臺無需管理大量用戶地址的密鑰並且沒有安全性的損失
- 無需向用戶地址注入Ether即可完成以太幣/ERC20代幣的歸集,流程更簡單,效率更高
- 支持在單一交易內完成多個用戶地址的歸集
以太坊SmartWallet.Net運行於.NET Framework 4.6.1環境下,主要類以及其關係如下圖所示:
以太坊SmartWallet.Net開發包的主要代碼文件清單見官網說明:http://sc.hubwiz.com/codebag/smartwallet-dotnet/
2、使用示例代碼
在使用示例代碼之前,首先按照實際情況修改Demo/App.config中的以下配置:
- nodeUrl:以太坊節點RPC URL,例如
http://localhost:8545
- ownerPrivateKey:主控私鑰,長度爲64,例如
4f3edf...3b1d
- coldWallet:歸集目標錢包地址,例如
0xFFcf....09f0
其他配置項無需修改,直接使用當前設置即可。
2.1 部署工廠合約
SmartWallet開發包利用工廠合約SmartWalletFacotry管理用戶地址的生成與歸集。因此首先需要部署工廠合約。
示例代碼Demo/DeployContractDemo.cs
展示瞭如何部署SmartWalletFactory合約以及一個用於演示的ERC20代幣合約。
運行結果如下:
2.2 生成用戶地址
示例代碼Demo/GenerateUserAddress.cs
展示瞭如何利用SmartWallet開發包 爲用戶生成平臺地址。
運行結果如下:
注:生成用戶地址不需要任何手續費。
2.3 用戶充值
示例代碼Demo/FundUserWalletDemo.cs
模擬了用戶向平臺地址的充值行爲。
運行結果如下:
2.4 查看用戶地址餘額
示例代碼Demo/GetUserBalanceDemo.cs
展示瞭如何查詢用戶地址的Ether/ERC20代幣餘額。
運行結果如下:
2.5 歸集用戶地址餘額
示例代碼Demo/SweepUserWallet.cs
展示瞭如何利用歸集用戶地址上的以太幣和ERC20代幣到指定的地址。
運行結果如下:
3、Kit類的使用方法
3.1 實例化Kit
Kit是SmartWallet開發包的入口類,實例化時需要傳入以太坊節點URL和一個賬號私鑰。例如:
//using EthTool;
var nodeUrl = "http://localhost:8545"; //節點地址
var ownerPrivateKey = "...."; //主控私鑰
var factoryAddr = "0xd13e...e0e3"; //錢包工廠合約地址
var kit = new Kit(nodeUrl, ownerPrivateKey, factoryAddr); //實例化Kit
3.2 生成用戶地址
使用Kit的GetUserWallet()
方法爲指定的用戶生成平臺地址,例如:
//using EthTool;
var uid = "u010203"; // 用戶的平臺ID
var address = await kit.GetUserWallet(uid); // 返回用戶地址
Console.WriteLine($"address => {address}"); // 顯示用戶地址
3.3 批量歸集用戶地址餘額
使用Kit的SweepUserWallets()
方法歸集一組用戶地址的以太幣/ERC20代幣餘額。例如:
//using EthTool;
string[] uids = {"u010203", "u030405", "u050607"}; // 用戶的平臺ID
string[] tokens = { "0xdac17f958d2ee523a2206206994597c13d831ec7" }; // 要歸集的代幣地址集合
string coldWallet = "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1"; // 接收歸集資產的冷錢包地址
var txid = await kit.SweepUserWallets(uids, tokens, coldWallet); // 返回歸集交易ID
Console.WriteLine($"sweep txid => {txid}"); // 顯示歸集交易ID
3.4 操作ERC20代幣
使用Kit的Erc20()
方法獲取指定地址的ERC20代幣實例,調用標準的ERC20接口即可操作代幣。例如查詢USDT餘額並轉賬:
//using System.Numerics;
//using EthTool;
var alice = '0xb8001c3e...e4a361ec1';
var token = kit.Erc20('0xdac17f958d2ee523a2206206994597c13d831ec7'); // 代幣合約實例
var balance = await token.BalanceOf(alice); // 查詢代幣餘額
Console.WriteLine($"balance => {balance}");
var txid = await token.Transfer(alice, new BigInteger(100000000)); // 代幣轉賬
Console.WriteLine($"transfer txid => {txid}");
以太坊智能錢包官方下載地址:http://sc.hubwiz.com/codebag/smartwallet-dotnet/