Custom mode
Apart from the opinionated initialization functions, the SDK provides a flexible TBTC.initializeCustom function for advanced users.
This function allows setting up the SDK to work with custom tBTC smart contracts and custom Bitcoin network. For example, it can be used to address the following use cases:
Using locally deployed tBTC contracts and local Bitcoin network
This is the common case when you are setting up a development environment. Let's suppose you have deployed the tBTC contracts on your local Ethereum chain and you are using a local Bitcoin regtest node. The following snippet demonstrates SDK initialization in that case:
import * as ethers from "ethers"
import {
TBTC,
TBTCContracts,
EthereumBridge,
EthereumTBTCToken,
EthereumTBTCVault,
EthereumWalletRegistry,
ElectrumClient,
} from "@keep-network/tbtc-v2.ts"
// Create an Ethers provider. Pass the URL of your local Ethereum node.
const provider = new ethers.providers.JsonRpcProvider("...")
// Create an Ethers signer. Pass the private key and the above provider.
const signer = new ethers.Wallet("...", provider)
// Create a reference to your locally deployed tBTC contracts.
// ABI will be loaded from the following contract packages:
// - @keep-network/tbtc-v2
// - @keep-network/ecdsa
const tbtcContracts: TBTCContracts = {
bridge: new EthereumBridge({address: "...", signerOrProvider: signer}),
tbtcToken: new EthereumTBTCToken({address: "...", signerOrProvider: signer}),
tbtcVault: new EthereumTBTCVault({address: "...", signerOrProvider: signer}),
walletRegistry: new EthereumWalletRegistry({address: "...", signerOrProvider: signer})
}
// Create an Electrum Bitcoin client pointing to your local regtest node.
const bitcoinClient = ElectrumClient.fromUrl("...")
// Initialize the SDK.
const sdk = await TBTC.initializeCustom(tbtcContracts, bitcoinClient)Using a custom Bitcoin client instead of the automatically configured one
In some cases, you may want to initialize the SDK for mainnet/testnet, but point the Electrum Bitcoin client to your own server. Here is how you can do that:
You can even use another (non-Electrum) Bitcoin client implementation. This is how you can achieve that:
Using mock tBTC contracts and mock Bitcoin network
Sometimes, you may also want to initialize the SDK with mock tBTC contracts and Bitcoin network for testing purposes. This can be done as follows:
Last updated
Was this helpful?