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/