Putty contest - asutorufos's results

An order-book based american options market for NFTs and ERC20s.

General Information

Platform: Code4rena

Start Date: 29/06/2022

Pot Size: $50,000 USDC

Total HM: 20

Participants: 133

Period: 5 days

Judge: hickuphh3

Total Solo HM: 1

Id: 142

League: ETH

Putty

Findings Distribution

Researcher Performance

Rank: 116/133

Findings: 1

Award: $21.17

🌟 Selected for report: 0

πŸš€ Solo Findings: 0

G001 - Don't Initialize Variables with Default Value Uninitialized variables are assigned with the types default value.

Explicitly initializing a variable with it's default value costs unnecesary gas. Puttyv2.sol L#556

[Puttyv2.sol L#594]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20assets.length%3B%20i%2B%2B)%20%7B,-address%20token%20%3D

[Puttyv2.sol L#611]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=from)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20assets.length%3B%20i%2B%2B)%20%7B,-ERC721(assets%5Bi%5D.token

[Puttyv2.sol L#627]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20floorTokens.length%3B%20i%2B%2B)%20%7B,-ERC721(floorTokens%5Bi%5D).safeTransferFrom(from

[Puttyv2.sol L#637]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20assets.length%3B%20i%2B%2B)%20%7B,-ERC20(assets%5Bi

[Puttyv2.sol L#647]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=assets)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20assets.length%3B%20i%2B%2B)%20%7B,-ERC721(assets%5Bi%5D.token

[Puttyv2.sol L#658]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=floorTokenIds)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20floorTokens.length%3B%20i%2B%2B)%20%7B,-ERC721(floorTokens%5Bi%5D).

[Puttyv2.sol L#670]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20whitelist.length%3B%20i%2B%2B)%20%7B

[Puttyv2.sol L#728]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=function%20encodeERC20Assets(,i%2B%2B)%20%7B

[Puttyv2.sol L#741]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=function%20encodeERC721Assets(,i%2B%2B)%20%7B

G002 - Cache Array Length Outside of Loop Caching the array length outside a loop saves reading it on each iteration, as long as the array's length is not changed during the loop. Puttyv2.sol L#556

[Puttyv2.sol L#594]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20assets.length%3B%20i%2B%2B)%20%7B,-address%20token%20%3D

[Puttyv2.sol L#611]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=from)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20assets.length%3B%20i%2B%2B)%20%7B,-ERC721(assets%5Bi%5D.token

[Puttyv2.sol L#627]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20floorTokens.length%3B%20i%2B%2B)%20%7B,-ERC721(floorTokens%5Bi%5D).safeTransferFrom(from

[Puttyv2.sol L#637]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20assets.length%3B%20i%2B%2B)%20%7B,-ERC20(assets%5Bi

[Puttyv2.sol L#647]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=assets)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20assets.length%3B%20i%2B%2B)%20%7B,-ERC721(assets%5Bi%5D.token

[Puttyv2.sol L#658]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=floorTokenIds)%20internal%20%7B-,for%20(uint256%20i%20%3D%200%3B%20i%20%3C%20floorTokens.length%3B%20i%2B%2B)%20%7B,-ERC721(floorTokens%5Bi%5D).

Puttyv2.sol L#670

[Puttyv2.sol L#728]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=function%20encodeERC20Assets(,i%2B%2B)%20%7B

[Puttyv2.sol L#742]https://github.com/code-423n4/2022-06-putty/blob/main/contracts/src/PuttyV2.sol#:~:text=function%20encodeERC721Assets(,i%2B%2B)%20%7B

G03 - Unnecessary checked arithmetic in for loop Using Solidity's unchecked block saves the overflow checks.

The for loops in G-02 can use unchecked.

G-04 ++I COSTS LESS GAS THAN I++, ESPECIALLY WHEN IT’S USED IN FOR-LOOPS (--I/I-- TOO) The for loops link in G-02 can use ++i

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