時間:2023-07-09|瀏覽:272
以太坊SmartWallet.Net開發包適用于平臺方高效完成對用戶地址上的Ether/ERC20代幣的歸集工作,無需向用戶地址注入Ether即可完成Ether/ERC20代幣的歸集。
以太坊SmartWallet.Net開發包的主要特點如下: - 真正的平臺型非托管錢包,平臺無需管理大量用戶地址的密鑰并且沒有安全性的損失 - 無需向用戶地址注入Ether即可完成以太幣/ERC20代幣的歸集,流程更簡單,效率更高 - 支持在單一交易內完成多個用戶地址的歸集
以太坊SmartWallet.Net運行于.NETFramework4.6.1環境下,主要類以及其關系如下圖所示:
以太坊SmartWallet.Net開發包的主要代碼文件清單如下: - 文件路徑 - 說明 - EthTool/EthTool.sln - SmartWallet.NET方案文件 - EthTool/EthTool/EthTool.csproj - SmartWallet.NET項目文件 - EthTool/EthTool/Kit.cs - SmartWallet開發包的入口類 - EthTool/EthTool/Erc20.cs - ERC20合約封裝類 - EthTool/EthTool/SmartWalletFactory.cs - SmartWalletFactory的封裝類 - EthTool/Demo/Demo.csproj - SmartWallet.NET演示項目文件 - EthTool/Demo/App.config - SmartWallet.NET演示項目配置文件 - EthTool/Demo/DeployContractDemo.cs - 演示如何部署SmartWalletFactory合約 - EthTool/Demo/GenerateUserWalletDemo.cs - 演示如何為用戶生成平臺智能錢包 - EthTool/Demo/FundUserWalletDemo.cs - 模擬用戶的充值操作 - EthTool/Demo/GetUserBalanceDemo.cs - 演示如何查詢用戶錢包的以太幣/ERC20代幣余額 - EthTool/Demo/SweepUserWalletDemo.cs - 演示如何歸集用戶錢包的以太幣/ERC20代幣余額 - contracts/AccessControl.sol - 訪問控制合約 - contracts/ERC20.sol - ERC20標準接口定義合約 - contracts/HappyToken.sol - 用于演示的ERC20代幣合約 - contracts/SmartWalletFactory.sol - 智能錢包工廠合約 - contracts/SmartWallet.sol - 智能錢包合約 - contracts/TransferHelper.sol - 交易輔助函數庫 - bin/solc - solidity編譯器 - bin/build-contracts - 合約編譯構建腳本
2、使用示例代碼
在使用示例代碼之前,首先按照實際情況修改Demo/App.config中的以下配置: - nodeUrl:以太坊節點RPCURL,例如http://localhost:8545 - ownerPrivateKey:主控私鑰,長度為64,例如4f3edf...3b1dc - oldWallet:歸集目標錢包地址,例如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和一個賬號私鑰。例如:
//usingEthTool; var nodeUrl = "http://localhost:8545";//節點地址 var ownerPrivateKey = "....";//主控私鑰 var factoryAddr = "0xd13e...e0e3";//錢包工廠合約地址 var kit = new Kit(nodeUrl, ownerPrivateKey, factoryAddr);//實例化Kit
3.2生成用戶地址
使用Kit的GetUserWallet方法為指定的用戶生成平臺地址,例如:
//usingEthTool; var uid = "u010203";//用戶的平臺ID var address = await kit.GetUserWallet(uid);//返回用戶地址 Console.WriteLine("address => {address}");//顯示用戶地址
3.3批量歸集用戶地址余額
使用Kit的SweepUserWallets方法歸集一組用戶地址的以太幣/ERC20代幣余額。例如:
//usingEthTool; string[] uids = {"u010203", "u030405", "u050607"};//用戶的平臺ID string[] tokens = {"0xdac17f958d2ee523a2206206994597c13d831ec7"};//要歸集的代幣地址集合 string coldWallet = "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1";//接收歸集資產的冷錢包地址 var txid = await kit.SweepUserWallets(uids, tokens, coldWallet);//返回歸集交易ID Console.WriteLine("sweeptxid => {txid}");//顯示歸集交易ID
3.4操作ERC20代幣
使用Kit的Erc20方法獲取指定地址的ERC20代幣實例,調用標準的ERC20接口即可操作代幣。例如查詢USDT余額并轉賬:
//usingSystem.Numerics;//usingEthTool; 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("transfertxid => {txid}");
以太坊SmartWallet.NET下載地址:http://sc.hubwiz.com/codebag/smartwallet-dotnet/