今日实时汇率

1 美元(USD)=

7.297 人民币(CNY)

反向汇率:1 CNY = 0.1370 USD   更新时间:2025-04-21 08:02:31

以太坊区块链钱包开发详解

1、开发包概述

以太坊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: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和一个账号私钥。例如:

//usingEthTool;varnodeUrl="http://localhost:8545";//节点地址varownerPrivateKey="....";//主控私钥varfactoryAddr="0xd13e...e0e3";//钱包工厂合约地址varkit=newKit(nodeUrl,ownerPrivateKey,factoryAddr);//实例化Kit

3.2 生成用户地址

使用Kit的GetUserWallet()方法为指定的用户生成 平台地址,例如:

//usingEthTool;varuid="u010203";//用户的平台IDvaraddress=awaitkit.GetUserWallet(uid);//返回用户地址Console.WriteLine($"address=>{address}");//显示用户地址

3.3 批量归集用户地址余额

使用Kit的SweepUserWallets()方法归集一组用户地址的以太币/ERC20代币余额。例如:

//usingEthTool;string[]uids={"u010203","u030405","u050607"};//用户的平台IDstring[]tokens={"0xdac17f958d2ee523a2206206994597c13d831ec7"};//要归集的代币地址集合stringcoldWallet="0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1";//接收归集资产的冷钱包地址vartxid=awaitkit.SweepUserWallets(uids,tokens,coldWallet);//返回归集交易IDConsole.WriteLine($"sweeptxid=>{txid}");//显示归集交易ID

3.4 操作ERC20代币

使用Kit的Erc20()方法获取指定地址的ERC20代币实例, 调用标准的ERC20接口即可操作代币。例如查询USDT余额并转账:


//usingSystem.Numerics;//usingEthTool;varalice='0xb8001c3e...e4a361ec1';vartoken=kit.Erc20('0xdac17f958d2ee523a2206206994597c13d831ec7');//代币合约实例varbalance=awaittoken.BalanceOf(alice);//查询代币余额Console.WriteLine($"balance=>{balance}");vartxid=awaittoken.Transfer(alice,newBigInteger(100000000));//代币转账Console.WriteLine($"transfertxid=>{txid}");

以太坊SmartWallet.NET下载地址:
http://sc.hubwiz.com/codebag/smartwallet-dotnet/