Backed Protocol contest - rfa's results

Protocol for peer to peer NFT-Backed Loans.

General Information

Platform: Code4rena

Start Date: 05/04/2022

Pot Size: $30,000 USDC

Total HM: 10

Participants: 47

Period: 3 days

Judge: gzeon

Total Solo HM: 4

Id: 106

League: ETH

Backed Protocol

Findings Distribution

Researcher Performance

Rank: 37/47

Findings: 1

Award: $58.88

🌟 Selected for report: 0

🚀 Solo Findings: 0

Awards

58.883 USDC - $58.88

Labels

bug
G (Gas Optimization)
sponsor acknowledged

External Links

gas

#1 Using custom error https://github.com/code-423n4/2022-04-backed/blob/main/contracts/NFTLoanFacilitator.sol#L81-L86 https://github.com/code-423n4/2022-04-backed/blob/main/contracts/NFTLoanFacilitator.sol#L118 https://github.com/code-423n4/2022-04-backed/blob/main/contracts/NFTLoanFacilitator.sol#L121 https://github.com/code-423n4/2022-04-backed/blob/main/contracts/NFTLoanFacilitator.sol#L171-L172 Declared by error statement, and using revert statement to throw the error message. This method is better for gas improvement than just using long string

#2 Tight var packing in Loan struct https://github.com/code-423n4/2022-04-backed/blob/main/contracts/interfaces/INFTLoanFacilitator.sol#L6-L16 By arranging the variables, it is possible to minimize the number of slots used within a contract's storage and therefore reduce deployment costs. Address var are 20 bytes size and bool are 1, there's a slot here that can get saved by moving them closer to an address. Change to:

struct Loan { uint16 perAnumInterestRate; uint32 durationSeconds; uint40 lastAccumulatedTimestamp; address collateralContractAddress; address loanAssetContractAddress; bool closed; uint128 accumulatedInterest; uint128 loanAmount; uint256 collateralTokenId; }

#3 Better using != than > or < https://github.com/code-423n4/2022-04-backed/blob/main/contracts/NFTLoanFacilitator.sol#L321 != is more efficient than < or > for gas optimization

#4 Using calldata to store string var parameter https://github.com/code-423n4/2022-04-backed/blob/main/contracts/NFTLoanTicket.sol#L21-L22 Using calldata instead of memory can save gas

AuditHub

A portfolio for auditors, a security profile for protocols, a hub for web3 security.

Built bymalatrax © 2024

Auditors

Browse

Contests

Browse

Get in touch

ContactTwitter