@depay/web3-wallets

中文文档
18.1.20发布于 2026/03/03MITESM + CJS零依赖构建来源已验证近 30 天下载 3823

One-Stop-Shop JavaScript library to integrate various web3 crypto wallets and multiple blockchains at once with a single interface.

原始使用文档
文档目录27 节
  1. Quickstart
  2. Demo
  3. Support
  4. Platform specific packaging
  5. EVM specific packaging
  6. SOLANA specific packaging
  7. Functionalities
  8. getWallets
  9. Name
  10. Logo
  11. Account
  12. Connect an account
  13. Platform
  14. Supported Blockchains
  15. Check if wallet is connected to a specific blockchain
  16. Receive wallet events
  17. Switch blockchain/network
  18. Transaction
  19. Data Structure
  20. sendTransaction
  21. Get wallet transaction count
  22. Sign messages
  23. Logos
  24. Conversion
  25. Development
  26. Get started
  27. Release

Quickstart

yarn add @depay/web3-wallets

or

npm install --save @depay/web3-wallets
import { getWallets } from '@depay/web3-wallets'

let wallets = await getWallets()

// display wallets, have user pick one:

let wallet = wallets[0]

wallet.name // MetaMask
await wallet.connect() // 0x317D875cA3B9f8d14f960486C0d1D1913be74e90

Demo

https://depayfi.github.io/web3-wallets/demo.html

Support

This library supports the following blockchains:

This library supports most crypto wallets:

See https://depay.com/wallets for more details

Platform specific packaging

In case you want to use and package only specific platforms, use platform-specific packages:

EVM specific packaging

import { getWallets } from '@depay/web3-wallets-evm'

SOLANA specific packaging

import { getWallets } from '@depay/web3-wallets-svm'

Functionalities

getWallets

getWallets: Returns an array of available/connectable wallets. Can wait up to 5 seconds because of checking existing WalletConnect connections. Use drip to receive available wallets faster.

let availableWallets = await getWallets();
// [<Wallet name='MetaMask'>, <Wallet name='Phantom'>]
let availableWallets = await getWallets();
// [] no wallets detected. (you can still try have user connec via WalletConnect or WalletLink)
import { getWallets, wallets } from "@depay/web3-wallets"

let availableWallets = await getWallets()

let wallet
if(availableWallets.length == 1) {
  wallet = availableWallets[0]
} else if(availableWallets.length > 1) {
  wallet = availableWallets[parseInt(prompt('Which wallet do you want to connect?'), 10)]
} else {
  // Let the user choose:
  // you can still try to connect via wallets.WalletConnect.connect()
  // or wallets.WalletLink.connect()
  wallet = wallets.WalletLink
}

drip

Pass a drip callback to getWallets to receive available wallet as soon as they are found, without waiting for all wallets to be checked:


getWallets({
  drip: (wallet)=>{
    setAvailableWallets(
      availableWallets.concat([wallet])
    )
  }
})

Name

name:string: Returns the name of the wallet.

wallet.name // 'MetaMask'

logo:string: Returns the logo of the wallet as PNG base64-encoded.

wallet.logo // 'data:image/png;base64,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'

Account

async account():string: Gets the currently connected and active account (without prompting a connect screen). Returns undefined if no account is connected.

await wallet.account() // '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'

Connect an account

async connect():string: Connects account. Potentially opens wallet connect screen. Provides connected account in async return. If wallet fails to connect, it returns undefined.

await wallet.connect() // '0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B'

Platform

platform:string: Platform of the identified wallet. If a wallet has multiplatform support (e.g. EVM + SVM), it will provide 1 wallet instance per platform (e.g. Phantom, Exodus, etc.)

wallet.platform // 'evm'

Supported Blockchains

blockchains:Array: Array containing the names of supported blockchains

wallet.blockchains // ['ethereum', 'bsc', 'polygon']

Check if wallet is connected to a specific blockchain

async connectedTo(blockchain):Boolean: Checks if wallet is connected to a specific blockchain.

await wallet.connectedTo('ethereum') // true

If no param is given it well tell you to which blockchain the wallet is connected to:

await wallet.connectedTo() // 'bsc'

can provide an array if connected to multiple blockchains:

await wallet.connectedTo() // ['ethereum', 'bsc']

Receive wallet events

on(string, function):undefined: Register a callback function for given events.

wallet.on('account', (newAccount)=>{
  doSomething(newAccount)
})

Events

on('account', (newAccount)=>{}): Triggers when user changes the connected/active wallet account.

Deregister wallet events

.on returns a callback function that needs to be passed to .off if you want to deregister the event listener:

let callback = wallet.on('account', (newAccount)=>{
  doSomething(newAccount)
})

//...

wallet.off('account', callback) // removes listener

Switch blockchain/network

async switchTo(blockchain): Changes wallet connection to a specific network (adds it to the wallet in case it's missing)

await wallet.switchTo('bsc')

Transaction

Data Structure

accepted: Function ()=>{}: Callback that will be executed once the transaction has been accepted by the wallet but not sent to the network yet (e.g. relayer, World App). Has no transaction yet, as only sent can contain the transaction.

api: Array: Api of the contract (e.g. abi for Ethereum, Layout/Struct for Solana).

blockchain: String: Name of the blockchain e.g. 'ethereum'.

failed: Function (transaction, error)=>{}: Callback that will be executed once the transaction failed onchain (reverted).

from: String: Address of the transaction sender.

id: String: Identifier of the transaction.

instructions: Array: List of instructions (Solana).

signers: Array: List of signers (Solana).

method: String: Name of the contract method to be called (EVM).

nonce: Integer: Nonce (number only used once) of the transaction (EVM).

params: Object or Array: Parameters passed to the method (EVM).

sent: Function (transaction)=>{}: Callback that will be executed executed once the transaction has been sent to the network.

succeeded: Function (transaction)=>{}: Callback that will be executed once the transaction was successful and has been confirmed at least once by the network.

to String: Address of the contract to be transacted with (EVM).

url String: Url to open the transaction (e.g. in an explorer).

value: Number or BigNumber as String: Value of the transaction (amount of the native blockchain currency sent along with the transaction).

sendTransaction

EVM: sendTransaction

Available arguments for EVM blockchains:

api: Array: Api of the contract (e.g. abi for Ethereum).

blockchain: String: Name of the blockchain e.g. 'ethereum'.

failed: Function (transaction, error)=>{}: Callback to be executed if transaction failed (e.g. reverted).

method: String: Name of the contract method to be called.

params: Object or Array: Parameters passed to the method.

sent: Function (transaction)=>{}: Callback to be executed if transaction has been sent to the network.

succeeded: Function (transaction)=>{}: Callback to be executed if transaction was successful and has been confirmed once by the network.

to String: Address of the contract to be transacted with.

value: Number or BigNumber as String: Value of the transaction (amount of the native blockchain currency sent along with the transaction).

EVM: Simple value transfer

e.g. sending 0.01 ETH on Ethereum:


let sentTransaction = await wallet.sendTransaction({
  blockchain: 'ethereum',
  to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',
  value: 0.01,
  sent: function(transaction){},
  succeeded: function(transaction){},
  failed: function(transaction, error){}
})
EVM: Smart contract interaction
let sentTransaction = await wallet.sendTransaction({
  blockchain: 'ethereum',
  to: '0xae60aC8e69414C2Dc362D0e6a03af643d1D85b92',
  api: [{"inputs":[{"internalType":"address","name":"_configuration","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"configuration","outputs":[{"internalType":"contract DePayRouterV1Configuration","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pluginAddress","type":"address"}],"name":"isApproved","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"path","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"address[]","name":"plugins","type":"address[]"},{"internalType":"string[]","name":"data","type":"string[]"}],"name":"route","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}],
  method: 'route',
  params: {
    path: ["0xb056c38f6b7Dc4064367403E26424CD2c60655e1","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2","0xa0bEd124a09ac2Bd941b10349d8d224fe3c955eb"],
    amounts: ["11275067000000000000000","100000000000000000000", "1632063302"],
    addresses: ["0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d", "0x39794c3171d4D82eB9C6FBb764749Eb7ED92881d"],
    plugins: ["0xe04b08Dfc6CaA0F4Ec523a3Ae283Ece7efE00019", "0x99F3F4685a7178F26EB4F4Ca8B75a1724F1577B9"],
    data: []
  },
  value: "0",
  sent: function(transaction){},
  succeeded: function(transaction){},
  failed: function(transaction, error){}
})

Solana: sendTransaction

Available arguments for Solana blockchains:

blockchain: String: Name of the blockchain e.g. 'solana'.

failed: Function (transaction, error)=>{}: Callback to be executed if transaction failed (e.g. reverted).

sent: Function (transaction)=>{}: Callback to be executed if transaction has been sent to the network.

succeeded: Function (transaction)=>{}: Callback to be executed if transaction was successful and has been confirmed once by the network.

Solana: Simple value transfer

e.g. send 0.01 SOL on Solana:

to String: Address of the receiver.

value: Number or BigNumber as String: Value of the transaction (only needed for simple SOL transfers).


let sentTransaction = await wallet.sendTransaction({
  blockchain: 'solana',
  to: '2UgCJaHU5y8NC4uWQcZYeV9a5RyYLF7iKYCybCsdFFD1',
  value: 0.01,
  sent: function(transaction){},
  succeeded: function(transaction){},
  failed: function(transaction, error){}
})
Solana: Sign and send instructions

instructions Array: A set of TransactionInstructions

e.g. Send 1 USDC:

import Token from '@depay/web3-tokens'

let sentTransaction = await wallet.sendTransaction({
  blockchain: 'solana',
  instructions: [
    await Token.solana.createTransferInstructions({
      token: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v', 
      amount: '1000000',
      from: await wallet.account(),
      to: '5AcFMJZkXo14r3Hj99iYd1HScPiM4hAcLZf552DfZkxas'
    })
  ],
  sent: function(transaction){},
  succeeded: function(transaction){},
  failed: function(transaction, error){}
})
Solana: Instruction signers

If you need to sign an instruction (e.g. creating "throw away" accounts)

you can pass signers as part of the transaction passed to sendTransaction:

import { getProvider } from '@depay/web3-client'
import Token from '@depay/web3-tokens'
import { PublicKey, SystemProgram, Keypair } from '@depay/solana-web3.js'

const wallets = await getWallets()
const wallet = wallets[0]
const fromAddress = await wallet.account()
const provider = await getProvider('solana')
const keypair = Keypair.generate()
const account = keypair.publicKey.toString()
const rent = await provider.getMinimumBalanceForRentExemption(Token.solana.TOKEN_LAYOUT.span)

let instruction = SystemProgram.createAccount({
  fromPubkey: new SolanaWeb3js.PublicKey(fromAddress),
  newAccountPubkey: new SolanaWeb3js.PublicKey(wrappedAccount),
  programId: new SolanaWeb3js.PublicKey(Web3Tokens.Token.solana.TOKEN_PROGRAM),
  space: Web3Tokens.Token.solana.TOKEN_LAYOUT.span,
  lamports: rent
})

let sentTransaction = await wallet.sendTransaction({
  blockchain: 'solana',
  instructions: [instruction],
  signers: [keypair],
  sent: function(transaction){},
  succeeded: function(transaction){},
  failed: function(transaction, error){}
})
Solana: Address Lookup Tables

If you need to pass address lookup tables in order to reduce transaction size,

you can pass alts as part of the transaction passed to sendTransaction:

import { getProvider } from '@depay/web3-client'
import Token from '@depay/web3-tokens'
import { PublicKey, SystemProgram, Keypair } from '@depay/solana-web3.js'

const wallets = await getWallets()
const wallet = wallets[0]
const fromAddress = await wallet.account()
const provider = await getProvider('solana')
const keypair = Keypair.generate()
const account = keypair.publicKey.toString()
const rent = await provider.getMinimumBalanceForRentExemption(Token.solana.TOKEN_LAYOUT.span)

let instruction = SystemProgram.createAccount({
  fromPubkey: new SolanaWeb3js.PublicKey(fromAddress),
  newAccountPubkey: new SolanaWeb3js.PublicKey(wrappedAccount),
  programId: new SolanaWeb3js.PublicKey(Web3Tokens.Token.solana.TOKEN_PROGRAM),
  space: Web3Tokens.Token.solana.TOKEN_LAYOUT.span,
  lamports: rent
})

let sentTransaction = await wallet.sendTransaction({
  blockchain: 'solana',
  instructions: [instruction],
  signers: [keypair],
  alts: ['3sEm5YYxgLnP1Z11WXHSgScWqFMrATSNDgZcXAcB1w9A'],
  sent: function(transaction){},
  succeeded: function(transaction){},
  failed: function(transaction, error){}
})

value

If value is passed as a number it's gonna be converted into a big number applying the individual blockchain's default decimals:

let transaction = new Transaction({
  ...,
  value: 1
})

transaction.value // '1000000000000000000'

If value is passed as a string or as a BigNumber, value is used just as provided:

let transaction = new Transaction({
  ...,
  value: '1000000000000000000'
})

transaction.value // '1000000000000000000'

wrong network

sendTransaction rejects with:

{ code: 'WRONG_NETWORK' }

in case wallet is connected to the wrong network and network cant be switched automatically.

Get wallet transaction count

import { transactionCount } from '@depay/web3-wallets'

let count = await transactionCount({ blockchain: 'polygon', address: '0x8Ffdb4Ee24a625856c82db7FAAE5Bd8B3406eF86' })

Sign messages

let signature = await wallet.sign("This is a message to be signed")

Logos

Conversion

Use https://codebeautify.org

Development

Get started

yarn install
yarn dev

Release

npm publish

版本与发布记录

@depay/web3-wallets 共发布 228 个版本,首次发布于 2021/11/27;过去 12 个月发布了 3 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
18.1.20latest2026/03/038 个月前
18.1.192026/02/138 个月前
18.1.182026/02/138 个月前
18.1.172025/07/021.4 年前
18.1.162025/07/021.4 年前
18.1.152025/06/051.4 年前

关于 @depay/web3-wallets 的常见问题

@depay/web3-wallets 是什么?

One-Stop-Shop JavaScript library to integrate various web3 crypto wallets and multiple blockchains at once with a single interface.

如何安装 @depay/web3-wallets?

在项目目录运行 npm install @depay/web3-wallets,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:@depay/coinbase-wallet-sdk(^3.8.4)、@depay/solana-web3.js(^1.98.0)、@depay/walletconnect-v2(^2.12.2)、@depay/web3-blockchains(^9.7.9)、@depay/web3-client(^11.1.0)、ethers(^5.7.1)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@depay/web3-wallets 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/depay__web3-wallets 是否存在。

@depay/web3-wallets 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@depay/web3-wallets 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@depay/web3-wallets 可以商用吗?

@depay/web3-wallets 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@depay/web3-wallets 的下载量有多少?

根据 npm 官方下载统计,@depay/web3-wallets 在 2026/10/12 – 2026/11/10 这 30 天内被下载 3,823 次,日均约 127 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@depay/web3-wallets 还在维护吗?

最新版本 18.1.20 发布于 2026/03/03(8 个月前);至今共发布 228 个版本,其中过去 12 个月发布了 3 个;首次发布于 2021/11/27。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。