Split

API Base

Test URL: https://test-api-proxy.ddpurse.com

Main URL: https://api-btc.tiertop.io

You can split the CAT20 assets of a specified address into different addresses through the following interface.

Get PSBT

POST /brc20swap/get_split_cat20_psbts

export interface GetSplitCat20PsbtsBody {
  cat_20_output_to_split: string;
  //txid+colon+vout
  is_average_split: boolean; //Whether to split equally to the original address
  is_ofc_token: boolean; //Whether it is an official token (fill in false by default, otherwise contact DotSwap for whitelist)
  split_num: number; //Split quantity
  tick: string;
  //tickName+ : +tokenId
  toinfos: GetSplitCat20PsbtsToinfo[]; //The allocation amount of each address (must be > 4 addresses)
  token_addr: string; //leave blank unless official
  user_addr: string; //Current user address
  user_pubkey: string; //Current user public key
}
export interface GetSplitCat20PsbtsToinfo {
  to_addr: string; // Which address you want to split to
  to_amt: number; // The amount you want to split to this address
}

Split Users' CAT20

{
  "tick": "dog:b1071ae617c66050d518587f67564885ca1a618b387a15f84001e3fa244ef3d6_0",
  "is_ofc_token": false,
  "user_addr": "bc1pxul8mg4fvx....cxej453h24smw03s0",
  "user_pubkey": "02d3ac7452920b1cc4....0a8c0aac6e3446e633a73ea63eee81",
  "cat_20_output_to_split": "08806ff819db249637a7c1cc762e4f9e29182d7dc658b7571f12c2b539106a1f:2",
  "token_addr": "bc1pxul8mg4fvx....cxej453h24smw03s0",
  "fee_rate": 9,
  "toinfos": [
    {
      "to_addr": "bc1pxrvq4n9ud.....587lf3xszyyczr",
      "to_amt": 5
    },
    {
      "to_addr": "bc1pxrvq4n9ud.....587lf3xszyyczr",
      "to_amt": 5
    },
    {
      "to_addr": "bc1pxrvq4n9ud.....587lf3xszyyczr",
      "to_amt": 5
    },
    {
      "to_addr": "bc1pxrvq4n9ud.....587lf3xszyyczr",
      "to_amt": 5
    },
    {
      "to_addr": "bc1pxrvq4n9ud.....587lf3xszyyczr",
      "to_amt": 5
    }
  ]

Regarding cat_20_output_to_split, you need to query the corresponding CAT20 UTXO of the corresponding address, find the UTXO you want to split, and then concatenate it with the txId and outputIndex of the corresponding UTXO Query address reference (please replace tokenIdOrTokenAddr and ownerAddrOrPkh)

Split Official CAT20

If you're using DotSwap's CAT20 deposit endpoint, you can use these 2 endpoints to split your deposited CAT20 tokens (aka "official CAT20", since they are in DotSwap's liquidity pool.)

  • When you first call the deposit endpoint /create_deposit_cat20_psbtv2, you can set the parameter not_split:true.

  • If the deposit is succesful, /create_deposit_cat20_order_by_psbt will return receiver_addr and txid.

Then, you can use the following parameters to call the split endpoint POST /brc20swap/get_split_cat20_psbts.

{

  // These two parameters should be set to true by default
  "is_ofc_token": true,
  "is_average_split": true,

  // This is the wallet you used for the deposit
  "user_addr": "bc1psx048lgxx9qlgnw2yjn6vw7ndz07f5rdlfxraqpxkr84tqa7670sagd4k8",
  "user_pubkey": "03c22e2f276e66c24e515b24a0c6bcf53852b046b31bbaf98d3f3075c005729691",

  // The token to be split (keep the same as the token name you deposited)
  "tick": "dog:b1071ae617c66050d518587f67564885ca1a618b387a15f84001e3fa244ef3d6_0",

  // This is the txid + :1 returned by the deposit interface (:1 is fixed)
  "cat_20_output_to_split": "3c92ae8ce3fd6377ac9316a28ded9ca5daef835dd3cf2613b8047c1ee9bbf530:1",

  // This is the receiver_addr returned by the deposit interface
  "token_addr": "bc1plsm7wgedgkguhk5xyllhyml2zstu0z7zs353hq7h6jlvu5puf4sqhc2l5t",

  // The number should be greater than 4
  "split_num": 5,

  "fee_rate": 9
}

Send PSBT

POST brc20swap/save_split_cat20_psbts

// Inherit the parameters of the previous interface
export interface SaveSplitCat20PsbtsBody extends GetSplitCat20PsbtsBody {
  psbts: string[];
}

Last updated