Canto Application Specific Dollars and Bonding Curves for 1155s - nailkhalimov's results

Tokenizable bonding curves using a Stablecoin-as-a-Service token

General Information

Platform: Code4rena

Start Date: 13/11/2023

Pot Size: $24,500 USDC

Total HM: 3

Participants: 120

Period: 4 days

Judge: 0xTheC0der

Id: 306

League: ETH

Canto

Findings Distribution

Researcher Performance

Rank: 71/120

Findings: 1

Award: $4.08

QA:
grade-b

🌟 Selected for report: 0

🚀 Solo Findings: 0

Awards

4.0797 USDC - $4.08

Labels

bug
downgraded by judge
grade-b
QA (Quality Assurance)
duplicate-19
Q-42

External Links

Lines of code

https://github.com/code-423n4/2023-11-canto/blob/main/1155tech-contracts/src/Market.sol#L290

Vulnerability details

Impact

In a _splitFees() function, on line #290 makes multiply after values were divided. Solidity doesn't support floating numbers. It means every time when functions buy(), burnNFT() or sell is calling, then it calculate wrong value of fees, which sharing among holders.

Proof of Concept

On line #290 makes multiplying shareHolderFee * 1e18. The value of shareHolderFee is calculated as uint256 shareHolderFee = (_fee * HOLDER_CUT_BPS) / 10_000. As a result, we have an expression: ((_fee * HOLDER_CUT_BPS) / 10_000) * 1e18 and it makes wrong calculation of fees.

Tools Used

  • Slither

My recommendation is to create value, which is making calculations and storing this value: uint256 shareHolderFeeCorrect = (_fee * HOLDER_CUT_BPS * 1e18) / 10_000;

Assessed type

Math

#0 - c4-pre-sort

2023-11-18T09:32:00Z

minhquanym marked the issue as duplicate of #19

#1 - c4-judge

2023-11-29T17:45:36Z

MarioPoneder changed the severity to QA (Quality Assurance)

#2 - c4-judge

2023-11-29T22:41:34Z

MarioPoneder 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