Skip to content

Commit

Permalink
optimized fees
Browse files Browse the repository at this point in the history
  • Loading branch information
3xp1orer committed Feb 17, 2025
1 parent 6dbb151 commit 0f82b89
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 20 deletions.
14 changes: 4 additions & 10 deletions contract/contracts/Borger.sol
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ contract Borger {

mapping(address => ReturnedState) private userStates;


Item public item;
address public owner;

Expand All @@ -36,20 +35,15 @@ contract Borger {
owner = msg.sender;
}

function checkReturnState(address user) view public returns (ReturnedState){
return (userStates[user]);
}

function borrowItem() public payable {
require(checkReturnState(msg.sender) == ReturnedState.Returned, "Item already borrowed");
require(msg.value == item.deposit, "Deposit does not match requirements.");
require(address(this).balance >= msg.value, "Contract doesn't have enough balance");
ReturnedState userState = userStates[msg.sender];
require(userState == ReturnedState.Returned, "Item already borrowed");
require(msg.value == item.deposit, "Invalid deposit amount");
userStates[msg.sender] = ReturnedState.Received;
}


function returnItem(bytes32 _hash) public noReentrant{
require(checkReturnState(msg.sender) == ReturnedState.Received, "Item available");
require(userStates[msg.sender] == ReturnedState.Received, "Item available");
require(_hash == item.sha256hash, "Hash doesn't match");
userStates[msg.sender] = ReturnedState.Returned;
payable(msg.sender).transfer(item.deposit);
Expand Down
11 changes: 1 addition & 10 deletions contract/test/Borger.ts
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ describe("Borger", function () {
it("Should not allow borrowing with incorrect deposit", async function () {
const { borger, borrower } = await loadFixture(deployBorgerFixture);
await expect(borger.connect(borrower).borrowItem({ value: ethers.parseEther("20") }))
.to.be.revertedWith("Deposit does not match requirements.");
.to.be.revertedWith("Invalid deposit amount");
});

it("Should not allow borrowing twice", async function () {
Expand Down Expand Up @@ -74,15 +74,6 @@ describe("Borger", function () {
await expect(borger.connect(borrower).returnItem("0xdd76cf5210b29098297dbb17b8ece744ef72c154f55cc0d1a4db0749932293ef"))
.to.be.revertedWith("Item available");
});

it("Should correctly track the return state", async function () {
const { borger, borrower } = await loadFixture(deployBorgerFixture);
expect(await borger.checkReturnState(borrower.getAddress())).to.equal(0);
await borger.connect(borrower).borrowItem({ value: ethers.parseEther("21") });
expect(await borger.checkReturnState(borrower.getAddress())).to.equal(1);
await borger.connect(borrower).returnItem("0xdd76cf5210b29098297dbb17b8ece744ef72c154f55cc0d1a4db0749932293ef");
expect(await borger.checkReturnState(borrower.getAddress())).to.equal(0);
});

it("Should refund the correct deposit when item is returned", async function () {
const { borger, borrower } = await loadFixture(deployBorgerFixture);
Expand Down

0 comments on commit 0f82b89

Please sign in to comment.