@@ -222,11 +222,10 @@ func (k Keeper) GetAllRevShares(
222222 var orderRouterRevShares []types.RevShare
223223 netFeesSubRevenueShare := new (big.Int ).Set (netFees )
224224 // No affiliate fees shared, so we can generate order router rev shares
225- if affiliateRevShares == nil {
226- orderRouterRevShares , err = k .getOrderRouterRevShares (ctx , fill , takerFees , makerFees )
227- if err != nil {
228- return types.RevSharesForFill {}, err
229- }
225+ // In the case that the taker has an affiliate fee and the maker does not, then no order router fees are generated
226+ // for the maker or the taker
227+ if len (affiliateRevShares ) == 0 {
228+ orderRouterRevShares = k .getOrderRouterRevShares (ctx , fill , takerFees , makerFees )
230229 for _ , revShare := range orderRouterRevShares {
231230 netFeesSubRevenueShare .Sub (netFeesSubRevenueShare , revShare .QuoteQuantums )
232231 }
@@ -325,58 +324,54 @@ func (k Keeper) getOrderRouterRevShares(
325324 fill clobtypes.FillForProcess ,
326325 takerFees * big.Int ,
327326 makerFees * big.Int ,
328- ) ( []types.RevShare , error ) {
327+ ) []types.RevShare {
329328 if fill .TakerOrderRouterAddr == "" && fill .MakerOrderRouterAddr == "" {
330- return nil , nil
329+ return []types. RevShare {}
331330 }
332331
333332 orderRouterRevShares := []types.RevShare {}
334333 takerOrderRouterRevSharePpm , err := k .GetOrderRouterRevShare (ctx , fill .TakerOrderRouterAddr )
335334 if err != nil {
336- // This should never happen
337- k .Logger (ctx ).Error ("order router rev share not found for taker: " + fill .TakerOrderRouterAddr )
338- return nil , err
339- }
340-
341- if fill .TakerOrderRouterAddr != "" {
342- // Orders can have 2 rev share ids, we need to calculate each side separately
343- // This is taker ppm * min(taker, taker - maker_rebate)
344- takerFeesSide := lib .BigMin (takerFees , new (big.Int ).Add (takerFees , makerFees ))
345- takerRevShare := lib .BigMulPpm (lib .BigU (takerOrderRouterRevSharePpm ), takerFeesSide , false )
346- orderRouterRevShares = append (orderRouterRevShares , types.RevShare {
347- Recipient : fill .TakerOrderRouterAddr ,
348- RevShareFeeSource : types .REV_SHARE_FEE_SOURCE_TAKER_FEE ,
349- RevShareType : types .REV_SHARE_TYPE_ORDER_ROUTER ,
350- QuoteQuantums : takerRevShare ,
351- RevSharePpm : takerOrderRouterRevSharePpm ,
352- })
335+ k .Logger (ctx ).Error ("order router rev share invalid for taker: " + fill .TakerOrderRouterAddr )
336+ } else {
337+ if fill .TakerOrderRouterAddr != "" {
338+ // Orders can have 2 rev share ids, we need to calculate each side separately
339+ // This is taker ppm * min(taker, taker - maker_rebate)
340+ takerFeesSide := lib .BigMin (takerFees , new (big.Int ).Add (takerFees , makerFees ))
341+ takerRevShare := lib .BigMulPpm (lib .BigU (takerOrderRouterRevSharePpm ), takerFeesSide , false )
342+ orderRouterRevShares = append (orderRouterRevShares , types.RevShare {
343+ Recipient : fill .TakerOrderRouterAddr ,
344+ RevShareFeeSource : types .REV_SHARE_FEE_SOURCE_TAKER_FEE ,
345+ RevShareType : types .REV_SHARE_TYPE_ORDER_ROUTER ,
346+ QuoteQuantums : takerRevShare ,
347+ RevSharePpm : takerOrderRouterRevSharePpm ,
348+ })
349+ }
353350 }
354351
355352 makerOrderRouterRevSharePpm , err := k .GetOrderRouterRevShare (ctx , fill .MakerOrderRouterAddr )
356353 if err != nil {
357- // This should never happen
358- k .Logger (ctx ).Error ("order router rev share not found for maker: " + fill .MakerOrderRouterAddr )
359- return nil , err
360- }
361-
362- if fill .MakerOrderRouterAddr != "" {
363- // maker ppm * max(0, maker)
364- makerFeeSide := lib .BigMax (lib .BigI (0 ), makerFees )
365- makerRevShare := lib .BigMulPpm (makerFeeSide ,
366- lib .BigU (makerOrderRouterRevSharePpm ),
367- false ,
368- )
369-
370- orderRouterRevShares = append (orderRouterRevShares , types.RevShare {
371- Recipient : fill .MakerOrderRouterAddr ,
372- RevShareFeeSource : types .REV_SHARE_FEE_SOURCE_MAKER_FEE ,
373- RevShareType : types .REV_SHARE_TYPE_ORDER_ROUTER ,
374- QuoteQuantums : makerRevShare ,
375- RevSharePpm : makerOrderRouterRevSharePpm ,
376- })
354+ k .Logger (ctx ).Error ("order router rev share invalid for maker: " + fill .MakerOrderRouterAddr )
355+ } else {
356+ if fill .MakerOrderRouterAddr != "" {
357+ // maker ppm * max(0, maker)
358+ makerFeeSide := lib .BigMax (lib .BigI (0 ), makerFees )
359+ makerRevShare := lib .BigMulPpm (makerFeeSide ,
360+ lib .BigU (makerOrderRouterRevSharePpm ),
361+ false ,
362+ )
363+
364+ orderRouterRevShares = append (orderRouterRevShares , types.RevShare {
365+ Recipient : fill .MakerOrderRouterAddr ,
366+ RevShareFeeSource : types .REV_SHARE_FEE_SOURCE_MAKER_FEE ,
367+ RevShareType : types .REV_SHARE_TYPE_ORDER_ROUTER ,
368+ QuoteQuantums : makerRevShare ,
369+ RevSharePpm : makerOrderRouterRevSharePpm ,
370+ })
371+ }
377372 }
378373
379- return orderRouterRevShares , nil
374+ return orderRouterRevShares
380375}
381376
382377func (k Keeper ) getUnconditionalRevShares (
0 commit comments