Current Wallet Runtime Environment Detection
Check if Bybit Wallet is Installed and Running Properly
First, we need to check if Bybit Wallet is installed and running properly.
if (typeof window.bybitWallet !== 'undefined') {
console.log('bybitWallet is installed!');
}
Check if the current version supports the Bitcoin chain
if (typeof window.bybitWallet.bitcoin !== 'undefined') {
console.log('Bitcoin chain is supported!');
}
Provider API
What is the Injected provider API?
The Injected provider API is a standard JavaScript API used to interact with Bybit Wallet. It allows DApps to interact with Bybit Wallet for operations such as authorization, signing, and sending transactions.
Connect to an Account
window.bybitWallet.solana.connect()
Function
Connects to the wallet.
Parameters
None
Return Value
Promise<{
address: string,
publicKey: string
}>
Example
const result = await window.bybitWallet.bitcoin.connect()
// example
{
address: 'bc1pwqye6x35g2n6xpwalywhpsvsu39k3l6086cvdgqazlw9mz2meansz9knaq',
publicKey: '4a627f388196639041ce226c0229560127ef9a5a39d4885123cd82dc82d8b497'
}
Request Connection - requestAccounts
window.bybitWallet.bitcoin.requestAccounts()
Description
Requests connection to the current account. If the user has not authorized it before, a connection popup will appear. After the user agrees, the account will be returned.
Parameters
None
Return Value
Promise<string[]>
Example
try {
let accounts = await window.bybitWallet.bitcoin.requestAccounts();
console.log('connect success', accounts);
} catch (e) {
console.log('connect failed');
}
// example
['tb1qrn7tvhdf6wnh790384ahj56u0xaa0kqgautnnz'];
Get Accounts - getAccounts
window.bybitWallet.bitcoin.getAccounts()
Description
Get the current account addresses. This method does not trigger a connection popup. If the DApp is not connected to the wallet, an empty array will be returned.
Parameters
None
Return Value
Promise<string[]>
Example
try {
let accounts = await window.bybitWallet.bitcoin.getAccounts();
console.log('success', accounts);
} catch (e) {
console.log(e);
}
// example
['tb1qrn7tvhdf6wnh790384ahj56u0xaa0kqgautnnz'];
Get Network - getNetwork
window.bybitWallet.bitcoin.getNetwork()
Description
Get the current network, returns a string, either "livenet" or "testnet". Currently, Bybit Wallet only supports "livenet", so it will always return "livenet".
Parameters
None
Return Value
Promise<string> // network
Example
try {
let res = await window.bybitWallet.bitcoin.getNetwork();
console.log(res);
} catch (e) {
console.log(e);
}
// example
livenet;
Get Public Key - getPublicKey
window.bybitWallet.bitcoin.getPublicKey()
Description
Get the public key of the current account
Parameters
None
Return Value
Promise<string> // public key
Example
try {
let publicKey = await window.bybitWallet.bitcoin.getPublicKey();
console.log('success', publicKey);
} catch (e) {
console.log(e);
}
// example
['tb1qrn7tvhdf6wnh790384ahj56u0xaa0kqgautnnz'];
Get Balance - getBalance
window.bybitWallet.bitcoin.getBalance()
Description
Get the balance of the current account
Parameters
None
Return Value
}>
Example
try {
let res = await window.bybitWallet.bitcoin.getBalance();
console.log(res);
} catch (e) {
console.log(e);
}
// example
{
"confirmed":0,
"unconfirmed":100000,
"total":100000
}
Get Inscriptions of Account - getInscriptions
window.bybitWallet.bitcoin.getInscriptions([cursor, size])
Description
Get the list of inscriptions for the current account
Parameters
cursor?: number; // Offset, start from 0, default 0
size?: number; // Number of items per page, default 20
Return Value
Promise<{
total: number; // Total count
list: Array<{
inscriptionId: string; // Inscription ID
inscriptionNumber: string; // Inscription number
address: string; // Inscription address
outputValue: string; // Inscription output value
contentLength: string; // Inscription content length
contentType: string; // Inscription content type
timestamp: string; // Inscription block timestamp
offset: number; // Inscription offset
output: string; // Identifier of the UTXO where the current inscription is located
genesisTransaction: string; // Transaction ID of the genesis transaction
location: string; // txid and vout of the current location
}>
}>
Example
try {
let res = await window.bybitWallet.bitcoin.getInscriptions(0, 20);
console.log(res)
} catch (e) {
console.log(e);
}
// example
{
"total":10,
"list":[{
inscriptionId: '6037b17df2f48cf87f6b6e6ff89af416f6f21dd3d3bc9f1832fb1ff560037531i0',
inscriptionNumber: 55878989,
address: 'bc1q8h8s4zd9y0lkrx334aqnj4ykqs220ss735a3gh',
outputValue: 546,
contentLength: 53,
contentType: 'text/plain',
timestamp: 1705406294,
location: '6037b17df2f48cf87f6b6e6ff89af416f6f21dd3d3bc9f1832fb1ff560037531:0:0',
output: '6037b17df2f48cf87f6b6e6ff89af416f6f21dd3d3bc9f1832fb1ff560037531:0',
offset: 0,
genesisTransaction: '02c9eae52923fdb21fe16ee9eb873c7d66fe412a61b75147451d8a47d089def4'}
]
}
Send Bitcoin - sendBitcoin
window.bybitWallet.bitcoin.sendBitcoin(toAddress, satoshis, options)
Description
Send Bitcoin. This method will display a send dialog, and once the user confirms, the transaction will be sent.
Parameters
toAddress: string; // Address to send to
satoshis: number; // Amount of satoshis to send
options?: {
feeRate: number; // Network fee rate
}
Return Value
Promise<string> // Transaction hash
Example
try {
let txid = await window.bybitWallet.bitcoin.sendBitcoin(
'tb1qrn7tvhdf6wnh790384ahj56u0xaa0kqgautnnz',
1000
);
console.log(txid);
} catch (e) {
console.log(e);
}
Send Inscription - sendInscription
window.bybitWallet.bitcoin.sendInscription(address, inscriptionId, option)
Description
Send an inscription. This method will display a send dialog, and once the user confirms, the transaction will be sent.
Parameters
address: string; // Recipient address
inscriptionId: string; // Inscription ID
option?: {
feeRate: number; // Custom fee rate
}
Return Value
Promise<string> // Transaction hash
Example
try {
let txid = await window.bybitWallet.bitcoin.sendInscription(
'tb1q8h8s4zd9y0lkrx334aqnj4ykqs220ss7mjxzny',
'e9b86a063d78cc8a1ed17d291703bcc95bcd521e087ab0c7f1621c9c607def1ai0',
{ feeRate: 15 }
);
console.log(
'send Inscription 204 to tb1q8h8s4zd9y0lkrx334aqnj4ykqs220ss7mjxzny',
{ txid }
);
} catch (e) {
console.log(e);
}
Inscribe Transfer - inscribeTransfer
window.bybitWallet.bitcoin.inscribeTransfer(ticker, amount)
Description
Inscribe transferable BRC-20 tokens. This method will display a send dialog, and once the user confirms, the transaction will be sent.
Parameters
ticker: string; // Identifier of the BRC-20 token
amount: number; // Amount to be inscribed
Return Value
Promise<string> // Transaction hash
Sign Message - signMessage
window.bybitWallet.bitcoin.signMessage(msg[, type])
Description
Signs a message
Parameters
msg: string; // message to sign
type?: 'hex' | 'utf8'; // "ecdsa" | "bip322-simple". default is "ecdsa"
Return Value
Promise<string> // signature
Example
const msg = 'need sign string';
const result = await window.bybitWallet.bitcoin.signMessage(msg, 'ecdsa')
// example
INg2ZeG8b6GsiYLiWeQQpvmfFHqCt3zC6ocdlN9ZRQLhSFZdGhgYWF8ipar1wqJtYufxzSYiZm5kdlAcnxgZWQU=
Broadcast Transaction - pushTx
window.bybitWallet.bitcoin.pushTx(rawTx)
Description
Broadcasts a transaction
Parameters
rawTx: string; // Raw data of the transaction
Return Value
Promise<string> // Transaction hash
Example
try {
let txid = await window.bybitWallet.bitcoin.pushTx('0200000000010135bd7d...');
console.log(txid);
} catch (e) {
console.log(e);
}
Sign Psbt - signPsbt
window.bybitWallet.bitcoin.signPsbt(psbtHex[, options])
Description
Signs a Psbt. This method will display a signature dialog, and once the user confirms, the transaction will be signed.
Parameters
psbtHex: string; // Hexadecimal string of the PSBT to be signed
options?: {
autoFinalized: boolean; // Whether to automatically finalize the PSBT after signing
toSignInputs: Array<{
index: number; // Index of the input to be signed
address: string; // (Specify address or publicKey) Corresponding private key used for signing
publicKey: string; // (Specify address or publicKey) Corresponding private key used for signing
sighashTypes: number[]; // sighashTypes
disableTweakSigner: boolean; // (Optional) When signing and unlocking Taproot addresses, the tweakSigner is used by default to generate signatures. Enabling this option allows signing with the original private key.
}>
}
Return Value
Promise<string> // Signature
Example
try {
let res = await window.bybitWallet.bitcoin.signPsbt('70736274ff01007d....', {
autoFinalized: false,
toSignInputs: [
{
index: 0,
address: 'tb1q8h8....mjxzny',
},
{
index: 1,
publicKey: 'tb1q8h8....mjxzny',
sighashTypes: [1],
},
{
index: 2,
publicKey: '02062...8779693f',
},
],
});
console.log(res);
} catch (e) {
console.log(e);
}
window.bybitWallet.bitcoin.signPsbt('xxxxxxxx', {
toSignInputs: [{ index: 0, publicKey: 'xxxxxx', disableTweakSigner: true }],
autoFinalized: false,
});
Broadcast PSBT Transaction - pushPsbt
window.bybitWallet.bitcoin.pushPsbt(psbtHex)
Description
Broadcasts a PSBT transaction.
Parameters
psbtHex: string; // Hexadecimal string of the PSBT to be pushed
Return Value
Promise<string> // Transaction hash
Example
try {
let res = await window.bybitWallet.bitcoin.pushPsbt('70736274ff01007d....');
console.log(res);
} catch (e) {
console.log(e);
}
Events
accountsChanged
Description
This message is emitted whenever there is a change in the exposed account addresses of the user.
Example
window.bybitWallet.bitcoin.on('accountsChanged', (accounts) => {
console.log(accounts)[
// example
'tb1qrn7tvhdf6wnh790384ahj56u0xaa0kqgautnnz'
];
});