If a limit bet doesn't match any orders, don't update the contract, don't redeem shares. Perf win!
This commit is contained in:
		
							parent
							
								
									6e1aa4b0f4
								
							
						
					
					
						commit
						a9018d77c7
					
				|  | @ -128,34 +128,38 @@ export const placebet = newEndpoint({}, async (req, auth) => { | |||
|       updateMakers(makers, betDoc.id, contractDoc, trans) | ||||
|     } | ||||
| 
 | ||||
|     trans.update(userDoc, { balance: FieldValue.increment(-newBet.amount) }) | ||||
|     log('Updated user balance.') | ||||
|     trans.update( | ||||
|       contractDoc, | ||||
|       removeUndefinedProps({ | ||||
|         pool: newPool, | ||||
|         p: newP, | ||||
|         totalShares: newTotalShares, | ||||
|         totalBets: newTotalBets, | ||||
|         totalLiquidity: newTotalLiquidity, | ||||
|         collectedFees: addObjects(newBet.fees, collectedFees), | ||||
|         volume: volume + newBet.amount, | ||||
|       }) | ||||
|     ) | ||||
|     log('Updated contract properties.') | ||||
|     if (newBet.amount !== 0) { | ||||
|       trans.update(userDoc, { balance: FieldValue.increment(-newBet.amount) }) | ||||
|       log('Updated user balance.') | ||||
| 
 | ||||
|     return { betId: betDoc.id, makers } | ||||
|       trans.update( | ||||
|         contractDoc, | ||||
|         removeUndefinedProps({ | ||||
|           pool: newPool, | ||||
|           p: newP, | ||||
|           totalShares: newTotalShares, | ||||
|           totalBets: newTotalBets, | ||||
|           totalLiquidity: newTotalLiquidity, | ||||
|           collectedFees: addObjects(newBet.fees, collectedFees), | ||||
|           volume: volume + newBet.amount, | ||||
|         }) | ||||
|       ) | ||||
|       log('Updated contract properties.') | ||||
|     } | ||||
| 
 | ||||
|     return { betId: betDoc.id, makers, newBet } | ||||
|   }) | ||||
| 
 | ||||
|   log('Main transaction finished.') | ||||
|   await redeemShares(auth.uid, contractId) | ||||
| 
 | ||||
|   const userIds = [ | ||||
|     auth.uid, | ||||
|     ...(result.makers ?? []).map((maker) => maker.bet.userId), | ||||
|   ] | ||||
|   await Promise.all(userIds.map((userId) => redeemShares(userId, contractId))) | ||||
|   log('Share redemption transaction finished.') | ||||
|   if (result.newBet.amount !== 0) { | ||||
|     const userIds = [ | ||||
|       auth.uid, | ||||
|       ...(result.makers ?? []).map((maker) => maker.bet.userId), | ||||
|     ] | ||||
|     await Promise.all(userIds.map((userId) => redeemShares(userId, contractId))) | ||||
|     log('Share redemption transaction finished.') | ||||
|   } | ||||
| 
 | ||||
|   return { betId: result.betId } | ||||
| }) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user