方法
pub(authorize.tabV2)
向钱包扩展请求授权,允许dApp连接。
请求
web3Enable("your-dapp-name");
响应
true | false
示例
import { web3Enable } from '@polkadot/extension-dapp';
const extensions = await web3Enable('my-dapp');
// 至少一个扩展授权则返回 true
pub(accounts.list) | pub(accounts.listV2)
获取钱包扩展中所有可用账户列表。
请求
无请求参数
响应
[
{
address: string;
name: string;
type: "sr25519" | "ed25519" | "ecdsa";
genesisHash?: string;
}
]
示例
const provider = await window.injectedWeb3['subwallet-js'].enable('test');
const accounts = await provider.accounts.get();
console.log(accounts);
// [
// {
// "address": "5HnGJmptAE1KL9GyARcqjq2xj2ALXN1Dfx8BuhfFGYAZVaT1",
// "genesisHash": "",
// "name": "test123",
// "type": "sr25519"
// }
// ]
pub(accounts.subscribe)
实时监听账户变化——当用户在扩展中增删账户或切换链(genesisHash)时触发。
请求
无
响应
[
{
address: string;
name: string;
type: "sr25519" | "ed25519" | "ecdsa";
genesisHash?: string;
}
]
示例
provider.accounts.subscribe((accounts) => {
console.log('账户已更新:', accounts);
});
pub(metadata.list)
返回钱包已缓存的所有链元数据。
请求
无
响应
{
genesisHash: string;
specVersion: number;
}
pub(metadata.provider)
接收dApp主动推送的链元数据。
不支持: 钱包不接收dApp主动推送的元数据。
pub(extrinsic.sign)
对Substrate外部调用(extrinsic)进行签名,请求为JSON结构体。
请求
{
specVersion: string;
transactionVersion: string;
address: string;
assetId: null | string;
blockHash: string;
blockNumber: string;
era: string;
genesisHash: string;
metadataHash: null | string;
method: string;
mode: number;
nonce: string;
signedExtensions: string[];
tip: string;
version: number;
withSignedTransaction: boolean;
}
响应
{
signature: HexString;
}
示例
// 请求
{
"specVersion": "0x000f5d99",
"transactionVersion": "0x0000001a",
"address": "16iZT75x21GnmgHV84fqsys7ae9zDfZMkSrg4zebpdC5g44G",
"blockHash": "0x6ed16c5a06bdd1044852e1d772bac5a25054018f8af7407b04c1d6b3f99b14a6",
"nonce": "0x00000000",
"version": 4
}
// 响应
{
"signature": "0x01b6b00e69ff7f4d1f161178b6b029a075e63334a0e848c664711646be1afe8145..."
}
pub(bytes.sign)
对任意字节数据或payload进行签名。
请求
{
address: string; // SS58编码地址
type: 'bytes' | 'payload';
data: string; // 十六进制编码的数据
}
响应
{
signature: HexString;
}
示例
const result = await provider.bytes.sign({
address: "5HnGJmptAE1KL9GyARcqjq2xj2ALXN1Dfx8BuhfFGYAZVaT1",
type: "bytes",
data: "0x48656c6c6f"
});
console.log(result.signature);