钱包开发以太坊智能钱包.NET开发包
以太坊SmartWallet.Net开发包适用于平台方高效完成对用户地址上 的Ether/ERC20代币的归集工作,无需向用户地址注入Ether即可完成 Ether/ERC20代币的归集。
以太坊SmartWallet.Net开发包的主要特点如下:
真正的平台型非托管钱包,平台无需管理大量用户地址的密钥并且没有安全性的损失无需向用户地址注入Ether即可完成以太币/ERC20代币的归集,流程更简单,效率更高支持在单一交易内完成多个用户地址的归集以太坊SmartWallet.Net运行于.NET Framework 4.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:以太坊节点RPC URL,例如 http://localhost:8545ownerPrivateKey:主控私钥,长度为64,例如 4f3edf...3b1dcoldWallet:归集目标钱包地址,例如 0xFFcf....09f0其他配置项无需修改,直接使用当前设置即可。
2.1 部署工厂合约SmartWallet开发包利用工厂合约SmartWalletFacotry管理用户 地址的生成与归集。因此首先需要部署工厂合约。
示例代码Demo/DeployContractDemo.cs展示了如何部署 SmartWalletFactory合约以及一个用于演示的ERC20代币合约。
运行结果如下:
示例代码Demo/GenerateUserAddress.cs展示了如何利用SmartWallet开发包 为用户生成平台地址。
运行结果如下:
注:生成用户地址不需要任何手续费。
2.3 用户充值示例代码Demo/FundUserWalletDemo.cs模拟了用户向平台地址的充值行为。
运行结果如下:
示例代码Demo/GetUserBalanceDemo.cs展示了如何查询用户地址的 Ether/ERC20代币余额。
运行结果如下:
示例代码Demo/SweepUserWallet.cs展示了如何利用归集用户地址 上的以太币和ERC20代币到指定的地址。
运行结果如下:
Kit是SmartWallet开发包的入口类,实例化时需要 传入以太坊节点URL和一个账号私钥。例如:
//using EthTool;var nodeUrl = "http://localhost:8545"; //节点地址var ownerPrivateKey = "...."; //主控私钥var factoryAddr = "0xd13e...e0e3"; //钱包工厂合约地址 var kit = new Kit(nodeUrl, ownerPrivateKey, factoryAddr); //实例化Kit3.2 生成用户地址使用Kit的GetUserWallet()方法为指定的用户生成 平台地址,例如:
//using EthTool;var uid = "u010203"; // 用户的平台IDvar address = await kit.GetUserWallet(uid); // 返回用户地址Console.WriteLine(#34;address => {address}"); // 显示用户地址3.3 批量归集用户地址余额使用Kit的SweepUserWallets()方法归集一组用户地址的以太币/ERC20代币余额。例如:
//using EthTool;string[] uids = {"u010203", "u030405", "u050607"}; // 用户的平台IDstring[] tokens = { "0xdac17f958d2ee523a2206206994597c13d831ec7" }; // 要归集的代币地址集合string coldWallet = "0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1"; // 接收归集资产的冷钱包地址var txid = await kit.Sweep比特币挖矿机UserWallets(uids, tokens, coldWallet); // 返回归集交易IDConsole.WriteLine(#34;sweep txid => {txid}"); // 显示归集交易ID3.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(#34;balance => {balance}"); var txid = await token.Transfer(alice, new BigInteger(100000000)); // 代币转账Console.WriteLine(#34;transfer txid => {txid}");以太坊SmartWallet.NET下载地址:http://sc.hubwiz.com/codebag/smartwallet-dotnet/
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。

路安



