The OKX Injected Provider API (Signet) is a powerful JavaScript-based interface that enables seamless interaction between decentralized applications (DApps) and the OKX Wallet browser extension. It allows DApps to request user account information, read data from connected blockchains, and facilitate the signing of messages and transactions directly within the user's browser environment.
This API is specifically designed for Bitcoin Signet, a test network for Bitcoin that allows developers to test their applications in a realistic environment without using real funds. It is essential to note that the BTC Signet functionality requires the OKX Wallet browser extension version 2.82.32 or higher to function correctly.
Core Functionality and Methods
The API provides several key methods that DApp developers can utilize to integrate wallet functionality into their applications. These methods are designed to be intuitive and secure, ensuring a smooth user experience while maintaining the highest standards of security.
Establishing a Connection
The first step in interacting with the OKX Wallet is establishing a connection between the DApp and the user's wallet.
okxwallet.bitcoinSignet.connect()
This method initiates the connection process between the DApp and the OKX Wallet. When called, it prompts the user to grant permission for the DApp to access their wallet information.
Parameters: None
Return Value:
Returns a Promise that resolves to an object containing:
address: A string representing the connected account's addresspublicKey: A string representing the connected account's public key
Usage Example:
This method is typically called when a user clicks a "Connect Wallet" button on a DApp interface. The returned address and publicKey can then be used throughout the application to identify the user and perform various blockchain operations.
Message Signing Capabilities
Digital signatures are fundamental to blockchain operations, providing proof of ownership and authorization for transactions.
okxwallet.bitcoinSignet.signMessage(signStr[, type])
This method allows DApps to request the user to sign arbitrary messages using their private keys. The signature serves as cryptographic proof that the message was approved by the account holder.
Parameters:
signStr: A string containing the data to be signedtype: (Optional) A string specifying the signature algorithm. Supported values are "ecdsa" or "bip322-simple", with "ecdsa" as the default
Return Value:
- Returns a Promise that resolves to a string containing the signature result
Usage Example:
Message signing is commonly used for authentication purposes, verifying ownership of an address without requiring a transaction, or signing off-chain data that might be used in smart contracts or other decentralized protocols.
Transaction Signing Methods
The API provides comprehensive tools for creating and signing Bitcoin transactions, which is crucial for DApps that involve value transfer or smart contract interactions.
okxwallet.bitcoinSignet.signPsbt(psbtHex[, options])
This method signs a Partially Signed Bitcoin Transaction (PSBT), which is a standardized format for creating and signing Bitcoin transactions. The method automatically identifies and signs all inputs that match the currently connected address.
Parameters:
psbtHex: A hexadecimal string representing the PSBT to be signed
Important Note:
When constructing transactions that involve Taproot addresses, developers must provide the public key for the input. This is necessary because Taproot addresses use a different cryptographic scheme than traditional Bitcoin addresses.
Options:
autoFinalized: A boolean value that determines whether the PSBT should be finalized after signing (default: true)toSignInputs: An array specifying which inputs to sign, particularly useful when multiple inputs require different signing approachesindex: The numerical index of the input to signaddress: The address corresponding to the private key that should be used for signingpublicKey: The public key corresponding to the private key that should be used for signingsighashTypes: (Optional) An array of sighash types that modify how the transaction is signeddisableTweakSigner: (Optional) A boolean that, when enabled, allows signing with the raw private key instead of using the tweakSigner for Taproot addresses
Return Value:
- Returns a Promise that resolves to a hexadecimal string representing the signed PSBT
okxwallet.bitcoinSignet.signPsbts(psbtHexs[, options])
This method extends the signing capability to multiple PSBTs simultaneously, improving efficiency for batch operations or complex transaction scenarios.
Parameters:
psbtHexs: An array of hexadecimal strings, each representing a PSBT to be signed
Options:
The options parameter for this method follows the same structure as the single PSBT signing method but is applied to each transaction in the array.
Return Value:
- Returns a Promise that resolves to an array of hexadecimal strings, each representing a signed PSBT
Implementation Best Practices
When integrating the OKX Injected Provider API into your DApp, consider the following best practices to ensure optimal performance and user experience:
- Always check for the presence of the OKX Wallet extension before attempting to call API methods
- Implement proper error handling to gracefully manage cases where users reject connection requests or signature prompts
- Provide clear user feedback throughout the connection and signing processes
- Use the appropriate signature types based on your specific use case requirements
- Test thoroughly on the Signet network before deploying to Bitcoin mainnet
For developers seeking to implement these features, understanding the underlying Bitcoin transaction structure is crucial. 👉 Explore advanced transaction building techniques to enhance your DApp's functionality.
Frequently Asked Questions
What is the difference between Signet and Bitcoin mainnet?
Signet is a test network for Bitcoin that mimics the mainnet environment but uses test coins instead of real Bitcoin. This allows developers to test their applications without financial risk. The OKX Injected Provider API works with both networks, but you must ensure you're connected to the appropriate network for your use case.
Why do I need to provide public keys for Taproot addresses?
Taproot addresses use Schnorr signatures and a different address format compared to traditional Bitcoin addresses. The public key is necessary for the wallet to properly construct and verify signatures for these addresses, as the address itself doesn't contain the full public key information.
Can I use this API with other Bitcoin wallets?
The OKX Injected Provider API is specifically designed for the OKX Wallet browser extension. While other wallets might implement similar interfaces, there may be differences in method names, parameters, or behavior. Always test your DApp with different wallets to ensure compatibility.
What happens if a user rejects a connection or signing request?
The API methods return Promises that will be rejected if the user denies the request. Your application should implement proper error handling to catch these rejections and provide appropriate feedback to the user, such as displaying a message explaining that the operation cannot proceed without wallet approval.
How do I handle different versions of the OKX Wallet extension?
The API includes version checking to ensure compatibility. The BTC Signet functionality requires version 2.82.32 or higher. Your DApp should check the wallet version upon connection and inform users if they need to update their extension to access certain features.
Is there a rate limit for API calls?
While the API itself doesn't impose strict rate limits, excessive calls might trigger security protections in the wallet extension. Implement reasonable caching and avoid making unnecessary repeated requests to ensure a smooth user experience.