支持零Ether歸集ERC20的智能錢包JS開發包

SmartWallet.JS 開發包適用於平臺方使用JavaScript高效完成對用戶地址上的Ether/ERC20代幣的歸集工作,無需向用戶地址注入Ether即可完成Ether/ERC20代幣的歸集。官方下載地址:SmartWallet.JS

1、開發包概述

SmartWallet.JS開發包的主要特點如下:

  • 真正的平臺型非託管錢包,平臺無需管理大量用戶地址的密鑰並且沒有安全性的損失
  • 無需向用戶地址注入Ether即可完成以太幣/ERC20代幣的歸集,流程更簡單,效率更高
  • 支持在單一交易內完成多個用戶地址的歸集

SmartWallet.JS開發包的主要代碼文件清單見官網說明:http://sc.hubwiz.com/codebag/smartwallet-js/

2、使用示例代碼

2.1 部署工廠合約

SmartWallet.JS開發包利用工廠合約 SmartWalletFacotry 管理用戶地址的生成與歸集。因此首先需要部署工廠合約。

進入項目目錄,執行如下命令在本地測試節點部署工廠合約和用於演示的HappyToken合約:

~$ cd smartwallet
~/smartwallet$ npm run deploy-dev

運行結果如下:

類似的,使用如下命令在主網部署工廠合約:

~/smartwallet$ npm run deploy-mainnet

注意:主網部署前,需要修改config.js文件中的賬號和節點配置。

2.2 生成用戶地址

示例代碼demo/generate-user-address.js展示瞭如何利用SmartWallet.JS開發包爲用戶生成平臺地址。

進入demo目錄,執行如下命令爲三個指定ID的用戶生成平臺地址:

~/smartwallet/demo$ node generate-user-wallet.js

運行結果如下:

在這裏插入圖片描述

注:生成用戶地址不需要任何手續費。

2.3 用戶充值

示例代碼demo/fund-user-address.js模擬了用戶向平臺地址的充值行爲。

執行如下命令向三個指定ID的用戶地址充入Ether和HappyToken:

~/smartwallet/demo$ node fund-user-wallet.js

運行結果如下:

在這裏插入圖片描述

2.4 查看用戶地址餘額

示例代碼demo/get-user-balance.js展示瞭如何查詢用戶地址的Ether/ERC20代幣餘額。

執行如下命令查詢三個指定ID用戶的餘額信息:

~/smartwallet/demo$ node get-user-balance.js

運行結果如下:

在這裏插入圖片描述

2.5 歸集用戶地址餘額

示例代碼demo/sweep-user-address.js展示瞭如何利用歸集用戶地址上的以太幣和ERC20代幣到指定的地址。

執行如下命令將三個指定ID用戶的餘額歸集到指定冷錢包:

~/smartwallet/demo$ node sweep-user-wallet.js

運行結果如下:

在這裏插入圖片描述

3、Kit類的使用方法

3.1 實例化Kit

Kit是SmartWallet開發包的入口類,實例化時需要傳入以太坊節點URL、交易賬號的私鑰以及工廠合約地址。例如:

const { Kit } = require('smartwallet')

const kit = new Kit(
  'http://localhost:8545',                                  // 以太坊節點URL
  '0x4f3edf983ac636a6......7d21715b23b1d'                   // 賬號私鑰
  '0xFA64858C14345C0a3aD805E0da64900C4d7ec5e6'              // 工廠合約地址                    
);

3.2 生成用戶地址

使用Kit對象的getUserWallet()方法爲指定的用戶生成平臺地址,例如:

const userId = 'u010203';                                         // 用戶的平臺ID
const userAddress = await kit.getUserWallet(userId);              // 返回用戶地址
console.log(`user address => ${userWallet}`);                     // 顯示用戶地址

3.3 歸集單個用戶地址餘額

使用Kit對象的sweepUserWallet()方法歸集指定用戶地址的以太幣/ERC20代幣餘額。例如:

const ret = await kit.sweepUserWallet(
  'u010203',                                                 // 用戶的平臺ID  
  ['0xc21dc5A1b919088F308e0b02243Aaf64c060Dbd0'],            // 要歸集的代幣地址集
  '0x13b2fe2754f40555cbcbd6302da39fda21d5fec1'               // 接收地址
);                      
console.log(`sweep txid => ${ret.tx}`);                      // 顯示歸集交易ID

3.4 批量歸集用戶地址餘額

使用Kit對象的sweepUserWallets()方法歸集一組用戶地址的以太幣/ERC20代幣餘額。例如:

txid = await kit.sweepUserWallets(
  ['u010203', 'u030405', 'u050607'],                         // 要歸集的用戶ID
  ['0xc21dc5A1b919088F308e0b02243Aaf64c060Dbd0'],            // 要歸集的代幣地址集  
  '0x13b2fe2754f40555cbcbd6302da39fda21d5fec1'               // 接收地址
);  
console.log(`sweep txid => ${ret.tx}`);                      // 顯示歸集交易ID

3.5 操作ERC20代幣

使用Kit對象的erc20()方法獲取指定地址的ERC20代幣實例,調用標準的ERC20接口即可操作代幣。例如查詢USDT餘額並轉賬:

const bob = '0xb8001c3e...e4a361ec1';                          // 某個接收地址
const token = await kit.erc20('0xdac17f958d2ee523a2206206994597c13d831ec7'); // 獲取token對象

const balance = await token.balanceOf(bob);                    // 查詢餘額
console.log(`balance => ${balance}`);                          // 顯示代幣餘額 

const ret = await token.transfer(bob, '100000000');            // 代幣轉賬
console.log(`sweep txid => ${ret.tx}`);                        // 顯示轉賬交易ID

SmartWallet.JS官方下載地址:http://sc.hubwiz.com/codebag/smartwallet-js/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章