标准钱包方法
方法 | 参数 | 返回类型 | 描述 |
---|---|---|---|
enable | () | Promise | 连接方法,返回账户信息 |
isConnected | () | boolean | 获取连接状态 |
addCurrency | () | Promise | 添加代币 |
switchChain | (method, data) | Promise | 切换区块链网络 |
disconnect | () | Promise | 断开钱包连接 |
signPersonalMessage | (data) | Promise | 签名个人消息 |
signTypedMessage | (data) | Promise | 签名类型化消息 |
request | (payload, callback) | Promise | 通用 eth 调用方法。payload.method 可以是 eth_sign 、personal_sign 、eth_sendTransaction 、eth_accounts 等。callback 在方法执行后调用 |
连接Bitget钱包
Provider
const provider = window.bitkeep.ethereum
连接

Preview
用于从用户的以太坊钱包请求账户访问权限
用法
/**
* @returns {*} [ address ] 地址列表
/
await provider.enable()
试一试
Loading live editor...
连接状态
- ethereum.isConnected() 检查钱包当前是否连接到 dApp。
- 如果提供者已连接则返回 true,否则返回 false。
用法
/**
* @returns {*} Boolean : 是否连接了钱包
/
await provider.isConnected()
试一试
Loading live editor...
试一试
Loading live editor...
管理网络
切换网络
wallet_switchEthereumChain 是以太坊兼容钱包(如 Bitget)提供的方法,允许去中心化应用程序(dApps)请求用户将其钱包切换到不同的区块链网络。

Preview
用法
interface SwitchEthereumChainParams {
method: 'wallet_switchEthereumChain'
params: {
chainId: string // 例如 '0xA4B1'
}[]
}
/*
* @param SwitchEthereumChainParams
*/
await provider.request(switchEthereumChainParams)
添加网络
wallet_addEthereumChain 是以太坊兼容钱包(如 Bitget)使用的方法,允许去中心化应用程序(dApp)以编程方式请求用户向其钱包添加新的区块链网络。
interface AddEthereumChainParams {
method: 'wallet_addEthereumChain'
params: {
chainId: string // 例如 '0xA4B1'
}[]
}
/*
* @param AddEthereumChainParams
*/
await provider.request(addEthereumChainParams)
试一试
Loading live editor...
签名消息
签名任意消息
Chrome
App

Preview

Preview
personal_sign(通常称为 signPersonalMessage)用于使用用户的以太坊私钥签名任意文本消息。
用法
interface PersonalSignMessage {
method: string;
params: {
msgHex: string; // 您要签名的消息,必须转换为十六进制
from: string; // 用户账户地址
};
}
/**
* @param {*} PersonalSignMessage :
* @returns {*} Boolean : 是否连接了钱包
/
await provider.signPersonalMessage(message)
试一试
Loading live editor...
签名结构化数据
Chrome
App

Preview

Preview
eth_signTypedData 函数(或特指 eth_signTypedData_v4)用于根据 EIP-712 标准签名结构化数据。此标准允许应用程序为复杂和结构化的数据创建密码学签名,确保签名既人类可读又可验证。
用法
interface EIP712Domain {
name: string
version: string
chainId: number
verifyingContract: string
}
interface Person {
name: string
wallet: string
}
interface Mail {
from: Person
to: Person
contents: string
}
interface TypedDataField {
name: string
type: string
}
interface TypedData {
types: {
EIP712Domain: TypedDataField[]
[key: string]: TypedDataField[]
}
domain: EIP712Domain
primaryType: string
message: Record<string, any>
}
interface SignTypedDataV4Param {
method: 'eth_signTypedData_v4'
params: [string, string] // account 和 JSON.stringify(typedData)
}
/*
* @param signTypedDataV4Param
* @returns string : 签名
*/
provider.request({
method: 'eth_signTypedData_v4',
params: [account, data],
})
试一试
Loading live editor...
wallet_watchAsset
EIP-747
由 EIP-747 标准指定。
参数
WatchAssetParams
- 要监视的资产的元数据。
interface WatchAssetParams {
type: 'ERC20' // 未来将支持其他标准
options: {
address: string // 代币合约的地址
symbol: string // 代币符号或简称,最多11个字符
decimals: number // 代币小数位数
image: string // 代币logo的字符串url
}
}
返回值
boolean
- 如果代币被添加则为 True,否则为 false。
描述
请求用户在 Bitget Wallet 中跟踪代币。返回一个布尔值,指示代币是否成功添加。
以太坊钱包支持一组代币,通常来自集中管理的代币注册表。wallet_watchAsset 允许 web3 应用程序开发者在运行时请求用户在其钱包中跟踪代币。一旦添加,代币与通过传统方法(例如集中注册表)添加的代币无法区分。
Provider.request({
method: 'wallet_watchAsset',
params: {
type: 'ERC20',
options: {
address: '0xb60e8dd61c5d32be8058bb8eb970870f07233155',
symbol: 'FOO',
decimals: 18,
image: 'https://foo.io/token-image.svg',
},
},
})
.then((success) => {
if (success) {
console.log('FOO 成功添加到钱包!')
} else {
throw new Error('出现了一些问题。')
}
})
.catch(console.error)
交易
Chrome
App

Preview

Preview
const transactionParameters = {
nonce: '0x00', // 被Bitkeep忽略
gasPrice: '0x09184e72a000', // 用户在Bitkeep确认期间可自定义。
gas: '0x2710', // 用户在Bitkeep确认期间可自定义。
to: '0x0000000000000000000000000000000000000000', // 除合约发布外都需要。
from: Provider.selectedAddress, // 必须匹配用户的活动地址。
value: '0x00', // 只有从发起外部账户向接收方发送以太币时才需要。
data: '0x7f7465737432000000000000000000000000000000000000000000000000000000600057', // 可选,但用于定义智能合约创建和交互。
chainId: '0x3', // 用于防止跨区块链交易重复使用。由Bitkeep自动填充。
}
// txHash 是十六进制字符串
// 与任何RPC调用一样,它可能抛出错误
const txHash = await Provider.request({
method: 'eth_sendTransaction',
params: [transactionParameters],
})
// 如果使用web3
const accounts = await Provider.request({ method: 'eth_requestAccounts' })
const web3 = new Web3(Provider)
const result = await web3.eth.sendTransaction({
from: Provider.selectedAddress,
to: '0x0000000000000000000000000000000000000000',
value: web3.utils.toWei('1', 'ether'),
})
Last updated on