Skip to main content

Swap

Create manually Swap messages without connecting to a provider. This fully implements BOTD#3

import { Swap } from "tdex-sdk";
const swap = new Swap({ chain: "regtest" });
const LBTC = "5ac9f65c0efcc4775e0baec4ec03abdde22473cd3cf33c0419ca290e0751b225";const USDT = "c5870288a7c9eb5db398a5b5e7221feb9753134439e8ed9f569b0eea5a423330";
// Alice starts a swap proposal//// You need to create and provide an unsigned transaction that has// enough inputs to cover amountToBeSent and the desired output// in case of confidential inputs/outputs, you also need to provide the blinding keys.const swapRequestMessage = await swap.request({  assetToBeSent: USDT,  amountToBeSent: 300,  assetToReceive: LBTC,  amountToReceive: 0.05,  psetBase64: "...",  inputBlindingKeys: {},  outputBlindingKeys: {},});
//Bob parses the request and inspect the termslet json = Swap.parse({  message: swapRequestMessage,  type: "SwapRequest",});
// Bob provides the transaction with his signed inputs and outputs// he also needs to add its blinding keysconst swapAcceptMessage = await swap.accept({  message: swapRequestMessage,  psetBase64: "...",  inputBlindingKeys: {},  outputBlindingKeys: {},});
//Alice can parse again the message and inspect the terms (optional)json = Swap.parse({  message: swapAcceptMessage,  type: "SwapAccept",});
// Alice adds his signed inputs to the transactionconst swapCompleteMessage = await swap.complete({  message: swapAcceptMessage,  psetBase64: "...",});
// Alice can sends the completed swap to Bob// Now Bob finalize the transaction and broadcast it