cover

以太坊智能地址.NET开发包

汇智网 / hubwiz.com

用智能地址代替传统的密钥对地址,无需注入以太币即可进行ERC20代币的归集

1、开发包概述

以太坊SmartWallet.Net开发包适用于平台方高效完成对用户地址上 的Ether/ERC20代币的归集工作,无需向用户地址注入Ether即可完成 Ether/ERC20代币的归集。

以太坊SmartWallet.Net开发包的主要特点如下:

  • 真正的平台型非托管钱包,平台无需管理大量用户地址的密钥并且没有安全性的损失
  • 无需向用户地址注入Ether即可完成以太币/ERC20代币的归集,流程更简单,效率更高
  • 支持在单一交易内完成多个用户地址的归集

以太坊SmartWallet.Net运行于.NET Framework 4.6.1环境下,主要类以及其关系如下图所示:

uml chart

以太坊SmartWallet.Net开发包的主要代码文件清单如下:

文件路径说明
EthTool/EthTool.slnSmartWallet.NET方案文件
EthTool/EthTool/EthTool.csprojSmartWallet.NET项目文件
EthTool/EthTool/Kit.csSmartWallet开发包的入口类
EthTool/EthTool/Erc20.csERC20合约封装类
EthTool/EthTool/SmartWalletFactory.csSmartWalletFactory的封装类
EthTool/Demo/Demo.csprojSmartWallet.NET演示项目文件
EthTool/Demo/App.configSmartWallet.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.solERC20标准接口定义合约
contracts/HappyToken.sol用于演示的ERC20代币合约
contracts/SmartWalletFactory.sol智能钱包工厂合约
contracts/SmartWallet.sol智能钱包合约
contracts/TransferHelper.sol交易辅助函数库
bin/solcsolidity编译器
bin/build-contracts合约编译构建脚本

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}");

声 明

本站所提供软件包仅用于学习和研究,请依法合规使用。

本站所提供软件包均提供完整源码,使用前请认真阅读源代码和文档以确保充分理解软件包的设计与功能实现,本站不承担 因不当使用本站所提供软件包而造成的任何法律风险或财产损失责任。

¥7500.00
查看授权信息
  • 付费成功自动开通下载
  • 三个月内代码免费升级
  • 专业人员在线技术支持
  • 支持按需定制(另付费)
下载代码包
版本发布日期地址
1.0.0 2021-3-20
下载最新版
QQ咨询
2860991437
9+