@@ -472,16 +472,14 @@ contract FixedRateExchange is ReentrancyGuard, IFixedRateExchange {
472472 );
473473
474474 if (datatokenAmount > exchanges[exchangeId].dtBalance) {
475- //first, let's try to mint
475+ //let's try to mint
476476 if (exchanges[exchangeId].withMint
477477 && IERC20Template (exchanges[exchangeId].datatoken).isMinter (address (this )))
478478 {
479479 IERC20Template (exchanges[exchangeId].datatoken).mint (msg .sender ,datatokenAmount);
480480 }
481481 else {
482- _pullUnderlying (exchanges[exchangeId].datatoken,exchanges[exchangeId].exchangeOwner,
483- msg .sender ,
484- datatokenAmount);
482+ revert ("FixedRateExchange: No available datatokens " );
485483 }
486484 } else {
487485 exchanges[exchangeId].dtBalance = (exchanges[exchangeId].dtBalance)
@@ -559,27 +557,24 @@ contract FixedRateExchange is ReentrancyGuard, IFixedRateExchange {
559557 .add (fee.publishMarketFeeAmount);
560558 uint256 baseTokenAmountWithFees = fee.baseTokenAmount.add (fee.oceanFeeAmount)
561559 .add (fee.publishMarketFeeAmount).add (fee.consumeMarketFeeAmount);
560+ if (baseTokenAmountWithFees > exchanges[exchangeId].btBalance) {
561+ // not enough baseTokens in fre, bail out
562+ revert ("FixedRateExchange: Not enough base tokens " );
563+ }
562564 _pullUnderlying (exchanges[exchangeId].datatoken,msg .sender ,
563565 address (this ),
564566 datatokenAmount);
565567 exchanges[exchangeId].dtBalance = (exchanges[exchangeId].dtBalance).add (
566568 datatokenAmount
567569 );
568- if (baseTokenAmountWithFees > exchanges[exchangeId].btBalance) {
569- _pullUnderlying (exchanges[exchangeId].baseToken,exchanges[exchangeId].exchangeOwner,
570- address (this ),
571- baseTokenAmountWithFees);
572- IERC20 (exchanges[exchangeId].baseToken).safeTransfer (
573- msg .sender ,
574- fee.baseTokenAmount);
575- } else {
576- exchanges[exchangeId].btBalance = (exchanges[exchangeId].btBalance)
570+
571+ exchanges[exchangeId].btBalance = (exchanges[exchangeId].btBalance)
577572 .sub (baseTokenAmountWithFees);
578- IERC20 (exchanges[exchangeId].baseToken).safeTransfer (
573+ IERC20 (exchanges[exchangeId].baseToken).safeTransfer (
579574 msg .sender ,
580575 fee.baseTokenAmount
581- );
582- }
576+ );
577+
583578 if (consumeMarketAddress!= address (0 ) && fee.consumeMarketFeeAmount> 0 ){
584579 IERC20 (exchanges[exchangeId].baseToken).safeTransfer (consumeMarketAddress, fee.consumeMarketFeeAmount);
585580 emit ConsumeMarketFee (
@@ -882,13 +877,7 @@ contract FixedRateExchange is ReentrancyGuard, IFixedRateExchange {
882877 - IERC20Template (exchanges[exchangeId].datatoken).totalSupply ();
883878 }
884879 else {
885- uint256 balance = IERC20Template (exchanges[exchangeId].datatoken)
886- .balanceOf (exchanges[exchangeId].exchangeOwner);
887- uint256 allowance = IERC20Template (exchanges[exchangeId].datatoken)
888- .allowance (exchanges[exchangeId].exchangeOwner, address (this ));
889- if (balance < allowance)
890- supply = balance.add (exchanges[exchangeId].dtBalance);
891- else supply = allowance.add (exchanges[exchangeId].dtBalance);
880+ supply = exchanges[exchangeId].dtBalance;
892881 }
893882 }
894883
@@ -906,13 +895,7 @@ contract FixedRateExchange is ReentrancyGuard, IFixedRateExchange {
906895 {
907896 if (exchanges[exchangeId].active == false ) supply = 0 ;
908897 else {
909- uint256 balance = IERC20Template (exchanges[exchangeId].baseToken)
910- .balanceOf (exchanges[exchangeId].exchangeOwner);
911- uint256 allowance = IERC20Template (exchanges[exchangeId].baseToken)
912- .allowance (exchanges[exchangeId].exchangeOwner, address (this ));
913- if (balance < allowance)
914- supply = balance.add (exchanges[exchangeId].btBalance);
915- else supply = allowance.add (exchanges[exchangeId].btBalance);
898+ supply = exchanges[exchangeId].btBalance;
916899 }
917900 }
918901
0 commit comments