Skip to content

Commit

Permalink
refactor: update comment
Browse files Browse the repository at this point in the history
  • Loading branch information
alfetopito committed Dec 31, 2024
1 parent 8e89770 commit 722e00c
Showing 1 changed file with 10 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -67,18 +67,24 @@ export async function signEthFlowOrderStep(
return GAS_LIMIT_DEFAULT
})

// This used to be done with a higher level of abstraction like this:
// Ensure the Eth flow contract network matches the network where you place the transaction.
// There are multiple wallet implementations, and potential race conditions that can cause the chain of the wallet to be different,
// and therefore leaving the chainId implicit might lead the user to place an order in an unwanted chain.
// This is especially dangerous for Eth Flow orders, because the contract address is different for the distinct networks,
// and this can lead to loss of funds.
//
// Thus, we are not using a higher level of abstraction as it doesn't allow to explicitly set the chainId:
// const txReceipt = await ethFlowContract.createOrder(ethOrderParams, {
// ...ethTxOptions,
// gasLimit: calculateGasMargin(estimatedGas),
// })
// However, to **try** to prevent wallet issues, we want to explicitly send along the chainId
// But that wrapper doesn't accept it.
// So we must build the tx first, then send it using the contract's signer
//
// So we must build the tx first:
const tx = await ethFlowContract.populateTransaction.createOrder(ethOrderParams, {
...ethTxOptions,
gasLimit: calculateGasMargin(estimatedGas),
})
// Then send the is using the contract's signer where the chainId is an acceptable parameter
const txReceipt = await ethFlowContract.signer.sendTransaction({ ...tx, chainId: network.chainId })

addInFlightOrderId(orderId)
Expand Down

0 comments on commit 722e00c

Please sign in to comment.