SafeSwap
Open SafeSwap
  • 👋Introduction to SafeSwap
  • Learn
    • 🤔How SafeSwap Works
    • 🪙SHA Token
    • ⛽Fee Structure
    • 💰Fee Distribution
    • 👑SafeNodes
    • 📚Glossary
  • User Guides
    • 🔄Swap Tokens
    • 📊Token Dashboard
  • Technical
    • ⚛️Cross-Chain Atomic Swaps
    • 🔐HTLC
    • 🛡️Security Measures
    • ⛓️Supported Blockchains
    • 👝Supported Wallets
    • 🕵️Audits
  • Builders
    • 🌍Hello World!
    • 🏗️Cross-Chain Use Cases
    • 🖥️Token Listing
    • 👨‍💻Whitelabel Integration
    • 📖API Integration Guide
      • Prerequisites
      • What is a Swap?
      • Perform a Swap
        • Initiate a Swap
        • Send Fees
        • Create the Swap in API
        • Wait/Poll for the Swap
        • Complete the Swap
        • Cancel/Refund
      • Smart Contract Details
      • Our Swap Addresses
      • API Details
  • About
    • Safe Haven
    • SafeTech
    • Support
Powered by GitBook
On this page
  1. Builders
  2. API Integration Guide
  3. Perform a Swap

Complete the Swap

When the Swap is ready, it is time to claim the funds

The final step is to have the user claim the funds on the destination chain. After the user calls withdraw with the secret, the secret is exposed to the public and now our team can use that secret to withdraw the original funds and complete the atomic swap.

Example


const SWAP_CONTRACT_ADDRESS_ON_DESTINATION = "0x..."; // get this from the docs for your network
const ABI = '{
    "constant": false,
    "inputs": [
      {
        "internalType": "bytes32",
        "name": "_contractId",
        "type": "bytes32"
      },
      {
        "internalType": "bytes32",
        "name": "_preimage",
        "type": "bytes32"
      }
    ],
    "name": "withdraw",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "payable": false,
    "stateMutability": "nonpayable",
    "type": "function"
  }';

const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();

const safeSwap = new ethers.Contract(SWAP_CONTRACT_ADDRESS, ABI, signer);

const response = await safeSwap.withdraw(swapInfo.targetContractId, secret, { gasLimit: 200000 });
return response.hash;
PreviousWait/Poll for the SwapNextCancel/Refund

Last updated 2 years ago

📖