@@ -168,24 +168,30 @@ fn consume_event(
168
168
let FillEvent {
169
169
tag : _,
170
170
taker_side,
171
- quote_size,
171
+ mut quote_size,
172
172
maker_order_id : _,
173
- base_size,
173
+ mut base_size,
174
174
..
175
175
} = event;
176
+ quote_size = quote_size
177
+ . checked_mul ( market_state. quote_currency_multiplier )
178
+ . unwrap ( ) ;
179
+ base_size = base_size
180
+ . checked_mul ( market_state. base_currency_multiplier )
181
+ . unwrap ( ) ;
176
182
let maker_account_info = & accounts[ accounts
177
183
. binary_search_by_key ( & maker_callback_info. user_account , |k| * k. key )
178
184
. map_err ( |_| DexError :: MissingUserAccount ) ?] ;
179
185
let ( taker_fee_tier, is_referred) = FeeTier :: from_u8 ( taker_callback_info. fee_tier ) ;
180
186
let mut maker_account_data = maker_account_info. data . borrow_mut ( ) ;
181
187
let mut maker_account = UserAccount :: from_buffer ( & mut maker_account_data) . unwrap ( ) ;
182
188
let ( maker_fee_tier, _) = FeeTier :: from_u8 ( maker_callback_info. fee_tier ) ;
183
- let taker_fee = taker_fee_tier. taker_fee ( * quote_size) ;
184
- let maker_rebate = maker_fee_tier. maker_rebate ( * quote_size) ;
189
+ let taker_fee = taker_fee_tier. taker_fee ( quote_size) ;
190
+ let maker_rebate = maker_fee_tier. maker_rebate ( quote_size) ;
185
191
let royalties_fee =
186
- market_state. royalties_bps . checked_mul ( * quote_size) . unwrap ( ) / 10_000 ;
192
+ market_state. royalties_bps . checked_mul ( quote_size) . unwrap ( ) / 10_000 ;
187
193
let referral_fee = if is_referred {
188
- taker_fee_tier. referral_fee ( * quote_size)
194
+ taker_fee_tier. referral_fee ( quote_size)
189
195
} else {
190
196
0
191
197
} ;
@@ -215,19 +221,19 @@ fn consume_event(
215
221
maker_account. header . base_token_locked = maker_account
216
222
. header
217
223
. base_token_locked
218
- . checked_sub ( * base_size)
224
+ . checked_sub ( base_size)
219
225
. unwrap ( ) ;
220
226
}
221
227
Side :: Ask => {
222
228
maker_account. header . base_token_free = maker_account
223
229
. header
224
230
. base_token_free
225
- . checked_add ( * base_size)
231
+ . checked_add ( base_size)
226
232
. unwrap ( ) ;
227
233
maker_account. header . quote_token_locked = maker_account
228
234
. header
229
235
. quote_token_locked
230
- . checked_sub ( * quote_size)
236
+ . checked_sub ( quote_size)
231
237
. unwrap ( ) ;
232
238
maker_account
233
239
. header
@@ -242,16 +248,16 @@ fn consume_event(
242
248
maker_account. header . accumulated_maker_quote_volume = maker_account
243
249
. header
244
250
. accumulated_maker_quote_volume
245
- . checked_add ( * quote_size)
251
+ . checked_add ( quote_size)
246
252
. unwrap ( ) ;
247
253
maker_account. header . accumulated_maker_base_volume = maker_account
248
254
. header
249
255
. accumulated_maker_base_volume
250
- . checked_add ( * base_size)
256
+ . checked_add ( base_size)
251
257
. unwrap ( ) ;
252
258
253
- market_state. quote_volume = market_state. quote_volume . checked_add ( * quote_size) . unwrap ( ) ;
254
- market_state. base_volume = market_state. base_volume . checked_add ( * base_size) . unwrap ( ) ;
259
+ market_state. quote_volume = market_state. quote_volume . checked_add ( quote_size) . unwrap ( ) ;
260
+ market_state. base_volume = market_state. base_volume . checked_add ( base_size) . unwrap ( ) ;
255
261
}
256
262
EventRef :: Out ( OutEventRef {
257
263
event,
@@ -260,7 +266,7 @@ fn consume_event(
260
266
let OutEvent {
261
267
side,
262
268
order_id,
263
- base_size,
269
+ mut base_size,
264
270
..
265
271
} = event;
266
272
let user_account_info = & accounts[ accounts
@@ -269,23 +275,27 @@ fn consume_event(
269
275
let mut user_account_data = user_account_info. data . borrow_mut ( ) ;
270
276
let mut user_account = UserAccount :: from_buffer ( & mut user_account_data) . unwrap ( ) ;
271
277
272
- if * base_size != 0 {
278
+ base_size = base_size
279
+ . checked_mul ( market_state. base_currency_multiplier )
280
+ . unwrap ( ) ;
281
+
282
+ if base_size != 0 {
273
283
match Side :: from_u8 ( * side) . unwrap ( ) {
274
284
Side :: Ask => {
275
285
user_account. header . base_token_free = user_account
276
286
. header
277
287
. base_token_free
278
- . checked_add ( * base_size)
288
+ . checked_add ( base_size)
279
289
. unwrap ( ) ;
280
290
user_account. header . base_token_locked = user_account
281
291
. header
282
292
. base_token_locked
283
- . checked_sub ( * base_size)
293
+ . checked_sub ( base_size)
284
294
. unwrap ( ) ;
285
295
}
286
296
Side :: Bid => {
287
297
let price = ( order_id >> 64 ) as u64 ;
288
- let qty_to_transfer = fp32_mul ( * base_size, price) ;
298
+ let qty_to_transfer = fp32_mul ( base_size, price) ;
289
299
user_account. header . quote_token_free = user_account
290
300
. header
291
301
. quote_token_free
0 commit comments