以太坊吧钱包(以太坊智能钱包。NET开发包)
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和一个账号私钥。例如:
//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";; // 用户的平台IDvar address = await kit。GetUserWallet(uid); // 返回用户地址Console。WriteLine($";address =>; {address}";); // 显示用户地址
3。3 批量归集用户地址余额
使用Kit的SweepUserWallets()方法归集一组用户地址的以太币/ERC20代币余额。例如:
//using EthTool;string[] uids = {";u010203";, ";u030405";, ";u050607";}; // 用户的平台IDstring[] tokens = { ";0xdac17f958d2ee523a2206206994597c13d831ec7"; }; // 要归集的代币地址集合string coldWallet = ";0x90F8bf6A479f320ead074411a4B0e7944Ea8c9C1";; // 接收归集资产的冷钱包地址var txid = await kit。SweepUserWallets(uids, tokens, coldWallet); // 返回归集交易IDConsole。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}";);
以太坊SmartWallet。NET下载地址:http!//sc。hubwiz。com/codebag/smartwallet-dotnet/
","content_hash"!"c5bb2927
评论