使用说明
- 安装依赖库
npm install @starcoin/starcoin
- 按需引入相关package
import { providers, utils, bcs, encoding } from '@starcoin/starcoin';
- 检查Starmask插件是否安装 如果是web dapps, 必须做这一步检查,否则不需要(比如在只是用来decrpyt一个字符串)
import StarMaskOnboarding from '@starcoin/starmask-onboarding'
const { isStarMaskInstalled } = StarMaskOnboarding
let onboarding
try {
onboarding = new StarMaskOnboarding({ forwarderOrigin })
} catch (error) {
console.error(error)
}
if (!isStarMaskInstalled()) {
onboardButton.innerText = 'Click here to install StarMask!'
onboardButton.onclick = onClickInstall
onboardButton.disabled = false
} else if (isStarMaskConnected()) {
onboardButton.innerText = 'Connected'
onboardButton.disabled = true
if (onboarding) {
onboarding.stopOnboarding()
}
} else {
onboardButton.innerText = 'Connect'
onboardButton.onclick = onClickConnect
onboardButton.disabled = false
}
const onClickInstall = () => {
onboardButton.innerText = 'Onboarding in progress'
onboardButton.disabled = true
onboarding.startOnboarding()
}
const accountButtonsDisabled = !isStarMaskInstalled() || !isStarMaskConnected()
- 连接远程节点
必须先检查 Starmask 插件是否安装, 否则无法连接远程节点
let starcoinProvider
try {
// window.starcoin is injected by Starmask(chrome extension)
if (window.starcoin) {
// We must specify the network as 'any' for starcoin to allow network changes
starcoinProvider = new providers.Web3Provider(window.starcoin, 'any')
}
} catch (error) {
console.error(error)
}
- 注册全局的监听事件
// 钱包网络切换
window.starcoin.on('chainChanged', handleNewChain)
window.starcoin.on('networkChanged', handleNewNetwork)
// 钱包帐号切换
window.starcoin.on('accountsChanged', handleNewAccounts)
- 连接Starmask钱包
const onClickConnect = async () => {
try {
const newAccounts = await window.starcoin.request({
method: 'stc_requestAccounts',
})
handleNewAccounts(newAccounts)
} catch (error) {
console.error(error)
}
}
参考
- Starmask-test-dapp
源码仓库: github