-
Notifications
You must be signed in to change notification settings - Fork 71
Description
Bug Report
Satoru version:
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.
Duplicate reentrancy in ExchangeRouter and [*]Handler
Expected behavior:
User can request create and cancel order, deposit and withdrawal via ExchangeRouter contract
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, senderAddress, privateKey);
const tx = await account.execute(createDepositCalldata);
Related code:
Other information:
