Serum Error What is "Unable to simulate swap"?

163 Views Asked by At

I would like to swap using project-serum/serum-ts. I prepared the following while reading readme.MD.

  • Use the latest version of Yarn etc.
  • Install the dependent modules according to readme.MD
  • Prepare the id.json file containing the wallet secret in ./config/solana/id.json
  • Put 0.01 SOL in the wallet on mainnet-beta.

After that, I tried to run node ./package/swap/example/swap.js, which is prepared for the sample.

This file -> https://github.com/project-serum/serum-ts/blob/master/packages/swap/examples/swap.js

I confirmed that it worked until line 26 _srmSwapPairs.

However, at line 29, I get the following error

Error: Unable to simulate swap
at Swap.estimate (/mnt/c/Users/username/Desktop/solana_test/serum-ts/packages/swap/lib/index.js:401:19)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async main (/mnt/c/Users/username/Desktop/solana_test/serum-ts/packages/swap/examples/swap.js:29:25)

My OS is Windows 10, but I am using WSL.

What could be the cause?

1

There are 1 best solutions below

1
On

This is most likely failing because you're trying to simulate a swap from SRM to USDC on your wallet, but your wallet doesn't have enough SRM to complete the trade, or doesn't have the accounts to conduct the trade.

To learn more about the issue, you can hack the code to print out more information about the failure:

    const resp = await this.program.provider.simulate(
      tx,
      signers,
      params.options,
    );
    if (resp === undefined || resp.value.err || !resp.value.logs) {
      console.error(resp); // get more information about the error
      throw new Error('Unable to simulate swap');
    }

You can make the changes at https://github.com/project-serum/serum-ts/blob/93946077cbacc4149a3372d9e6651bf4de18a255/packages/swap/src/index.ts#L535