keep-starknet-strange / satoru

Synthetics platform for Starknet, inspired by GMX v2 design.
https://book.satoru.run/
MIT License
110 stars 74 forks source link

bug: #623

Closed 0xted97 closed 4 months ago

0xted97 commented 4 months ago

Bug Report

Satoru version:

6ebc1a4

Current behavior:

ReentrancyGuard: reentrant call when create_order, cancel_order, simulate_execute_order, create_deposit, cancel_deposit, simulate_execute_deposit, create_withdrawal, cancel_withdrawal, simulate_execute_withdrawal.

Expected behavior:

User can request create and cancel order, deposit and withdrawal

Steps to reproduce: const createDepositCalldata: Call[] = [ { contractAddress: depositParams.initial_long_token_address, entrypoint: "approve", calldata: [ contractAddresses.Router, depositParams.initial_long_token_amount.toString(), "0" ] }, { contractAddress: depositParams.initial_short_token_address, entrypoint: "approve", calldata: CallData.compile({ spender: contractAddresses.Router, amount: uint256.UINT_128_MAX, value: 0 }) }, { contractAddress: contractAddresses.ExchangeRouter, entrypoint: "send_tokens", calldata: [ depositParams.initial_long_token_address, contractAddresses.DepositVault, depositParams.initial_long_token_amount.toString() ] }, { contractAddress: contractAddresses.ExchangeRouter, entrypoint: "send_tokens", calldata: [ depositParams.initial_short_token_address, contractAddresses.DepositVault, BigInt(depositParams.initial_short_token_amount), ], }, { contractAddress: contractAddresses.DepositHandler, entrypoint: "create_deposit", calldata: [ account.address, depositParams.receiver, depositParams.callback_contract, depositParams.ui_fee_receiver, depositParams.market_token_address, depositParams.initial_long_token_address, depositParams.initial_short_token_address, depositParams.long_token_swap_path, depositParams.short_token_swap_path, depositParams.min_market_tokens.toString(), depositParams.execution_fee.toString(), depositParams.callback_gas_limit.toString() ] } ]; const account = new Account(provider, "0xaccount", "0xprivatekey");

Related code:

insert short code snippets here

Other information: