Paladin - Warden Pledges contest - djxploit's results

A governance lending protocol transforming users voting power into a new money lego.

General Information

Platform: Code4rena

Start Date: 27/10/2022

Pot Size: $33,500 USDC

Total HM: 8

Participants: 96

Period: 3 days

Judge: kirk-baird

Total Solo HM: 1

Id: 176

League: ETH

Paladin

Findings Distribution

Researcher Performance

Rank: 38/96

Findings: 2

Award: $31.16

QA:
grade-b
Gas:
grade-b

🌟 Selected for report: 0

🚀 Solo Findings: 0

1) Usage of block.timestamp is risky, as it can be manipulated by miners, so avoid it.

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L237 https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L319 https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L380 https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L426

2) Missing 0-address check

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L137-L140

3) Check , effect and interact pattern is not followed below. State is updated after making an external call.

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L394_L401

4) Event is missing indexed fields

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L94_L98 https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L102_L105

5) TYPOS should be resolved, to avoid confusion and enhance readability

(https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L292)[https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L295](https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L295)[https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L296](https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L296)[https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L411](https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L411)[https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L412](https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L412)[https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L453](https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L453)[https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L485](https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L485)

#0 - c4-judge

2022-11-12T01:04:09Z

kirk-baird marked the issue as grade-b

1) Use unchecked keyword wherever appropriate to save gas by avoiding unnecessary underflow/overflow check

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L268

2) Storage pointer to a structure is cheaper than copying each value of the structure into memory

It may not be obvious, but every time you copy a storage struct/array/mapping to a memory variable, you are literally copying each member by reading it from storage, which is expensive. And when you use the storage keyword, you are just storing a pointer to the storage, which is much cheaper.

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L227 https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L318

3) x = x + y is cheaper than x+=y

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L340 https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L401 https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L445

4) Usage of uints/ints smaller than 32 bytes (256 bits) incurs overhead

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L41

5) Multiple mappings with same key can be combined to a struct

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L50 with https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L56

https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L52 with https://github.com/code-423n4/2022-10-paladin/blob/main/contracts/WardenPledge.sol#L67

#0 - c4-judge

2022-11-12T01:02:17Z

kirk-baird marked the issue as grade-b

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