Skip to content

Commit

Permalink
getInputValueForOrderValue (#59)
Browse files Browse the repository at this point in the history
  • Loading branch information
jaketimothy authored Jun 7, 2023
1 parent c4baa63 commit 317c102
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 16 deletions.
36 changes: 20 additions & 16 deletions .gas-snapshot
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,34 @@ BridgedERC20Test:testTransferBannedFromReverts() (gas: 117070)
BridgedERC20Test:testTransferBannedToReverts() (gas: 119329)
BridgedERC20Test:testTransferRestrictedToReverts() (gas: 120257)
BridgedTokenFactoryTest:testDeployToken() (gas: 1138684)
DirectBuyIssuerTest:testCancelOrder(uint128,uint128,string) (runs: 518, μ: 362662, ~: 362752)
DirectBuyIssuerTest:testCancelOrder(uint128,uint128,string) (runs: 518, μ: 354150, ~: 362336)
DirectBuyIssuerTest:testCancelOrderNotFoundReverts() (gas: 32635)
DirectBuyIssuerTest:testFillOrder(uint128,uint128,uint128,uint256) (runs: 518, μ: 307491, ~: 280883)
DirectBuyIssuerTest:testFillorderNoOrderReverts() (gas: 32535)
DirectBuyIssuerTest:testInitialize(address,address) (runs: 518, μ: 6984512, ~: 6984512)
DirectBuyIssuerTest:testRequestCancel() (gas: 242113)
DirectBuyIssuerTest:testFillOrder(uint128,uint128,uint128,uint256) (runs: 518, μ: 308948, ~: 280795)
DirectBuyIssuerTest:testFillorderNoOrderReverts() (gas: 32425)
DirectBuyIssuerTest:testGetInputValue(uint128) (runs: 518, μ: 33487, ~: 33530)
DirectBuyIssuerTest:testInitialize(address,address) (runs: 518, μ: 7118821, ~: 7118821)
DirectBuyIssuerTest:testRequestCancel() (gas: 242135)
DirectBuyIssuerTest:testRequestCancelNotFoundReverts() (gas: 30082)
DirectBuyIssuerTest:testRequestCancelNotRecipientReverts() (gas: 234475)
DirectBuyIssuerTest:testRequestOrder(uint128) (runs: 518, μ: 192275, ~: 250302)
DirectBuyIssuerTest:testRequestOrderCollisionReverts() (gas: 237040)
DirectBuyIssuerTest:testRequestOrderPausedReverts() (gas: 53647)
DirectBuyIssuerTest:testRequestOrderUnsupportedAssetReverts(address) (runs: 518, μ: 93015, ~: 93015)
DirectBuyIssuerTest:testRequestCancelNotRecipientReverts() (gas: 234497)
DirectBuyIssuerTest:testRequestOrder(uint128) (runs: 518, μ: 197339, ~: 250413)
DirectBuyIssuerTest:testRequestOrderCollisionReverts() (gas: 237062)
DirectBuyIssuerTest:testRequestOrderPausedReverts() (gas: 53669)
DirectBuyIssuerTest:testRequestOrderUnsupportedAssetReverts(address) (runs: 518, μ: 92971, ~: 92971)
DirectBuyIssuerTest:testRequestOrderUnsupportedPaymentReverts(address) (runs: 518, μ: 95482, ~: 95482)
DirectBuyIssuerTest:testRequestOrderWithPermit() (gas: 307900)
DirectBuyIssuerTest:testReturnEscrow(uint128,uint256) (runs: 518, μ: 287727, ~: 283156)
DirectBuyIssuerTest:testSetFees(address) (runs: 518, μ: 24634, ~: 24634)
DirectBuyIssuerTest:testSetOrdersPaused(bool) (runs: 518, μ: 28092, ~: 21677)
DirectBuyIssuerTest:testSetTreasury(address) (runs: 518, μ: 24973, ~: 24973)
DirectBuyIssuerTest:testTakeEscrow(uint128,uint256) (runs: 518, μ: 259856, ~: 244696)
DirectBuyIssuerTest:testRequestOrderWithPermit() (gas: 308033)
DirectBuyIssuerTest:testReturnEscrow(uint128,uint256) (runs: 518, μ: 288098, ~: 283111)
DirectBuyIssuerTest:testSetFees(address) (runs: 518, μ: 24656, ~: 24656)
DirectBuyIssuerTest:testSetOrdersPaused(bool) (runs: 518, μ: 28153, ~: 21699)
DirectBuyIssuerTest:testSetTreasury(address) (runs: 518, μ: 24885, ~: 24885)
DirectBuyIssuerTest:testTakeEscrow(uint128,uint256) (runs: 518, μ: 259815, ~: 244718)
MessagerTest:testSendMessage(uint256,address,string) (runs: 518, μ: 22472, ~: 22522)
MessagerTest:testSendMessageInvalidReverts() (gas: 19518)
OrderFeesTest:testRecoverInputValueFromFee(uint64,uint128) (runs: 518, μ: 20806, ~: 20842)
OrderFeesTest:testRecoverInputValueFromFeeOnRemaining(uint64,uint128) (runs: 518, μ: 22200, ~: 22259)
OrderFeesTest:testSetFee(uint64,uint64,uint8,uint128) (runs: 518, μ: 580608, ~: 721682)
OrderFeesTest:testUSDC() (gas: 15653)
SellOrderProcessorTest:testCancelOrder(uint128,uint128,string) (runs: 518, μ: 352800, ~: 352833)
SellOrderProcessorTest:testFillOrder(uint128,uint128,uint256) (runs: 518, μ: 292053, ~: 282494)
SellOrderProcessorTest:testRequestOrder(uint128) (runs: 518, μ: 206330, ~: 211444)
TransferRestrictorTest:testBanUnban(address) (runs: 518, μ: 29036, ~: 29028)
TransferRestrictorTest:testSetResetKyc(address,uint8) (runs: 518, μ: 28785, ~: 32165)
9 changes: 9 additions & 0 deletions src/issuer/BuyOrderIssuer.sol
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,15 @@ contract BuyOrderIssuer is OrderProcessor {
}
}

function getInputValueForOrderValue(address token, uint256 orderValue) external view returns (uint256) {
if (address(orderFees) == address(0)) {
return orderValue;
}
uint256 flatFee = orderFees.flatFeeForOrder(token);
uint256 recoveredValue = orderFees.recoverInputValueFromFeeOnRemaining(orderValue);
return recoveredValue + flatFee;
}

function _requestOrderAccounting(OrderRequest calldata order, bytes32 salt, bytes32 orderId)
internal
virtual
Expand Down
6 changes: 6 additions & 0 deletions test/DirectBuyIssuer.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,12 @@ contract DirectBuyIssuerTest is Test {
assertEq(issuer.ordersPaused(), pause);
}

function testGetInputValue(uint128 orderValue) public {
uint256 inputValue = issuer.getInputValueForOrderValue(address(paymentToken), orderValue);
(uint256 flatFee, uint256 percentageFee) = issuer.getFeesForOrder(address(paymentToken), inputValue);
assertEq(inputValue - flatFee - percentageFee, orderValue);
}

function testRequestOrder(uint128 quantityIn) public {
OrderProcessor.OrderRequest memory order = OrderProcessor.OrderRequest({
recipient: user,
Expand Down

0 comments on commit 317c102

Please sign in to comment.