Vaporware

QuantstampRepository at commit 32f97cd

Quantstamp reviewed Vaporware on 26 Oct 2023: 19 findings, 0 critical; 10 marked fixed, 7 acknowledged, 2 open.

No open critical findings
Open the reportOpen Vaporware’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings19

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High102
Medium010
Low168
MediumReward Disbursement Can Be Front-RunAcknowledged

Rewards may be added to the `Rewards` contract in a number of different ways: 1. When minting liquid accessories through `LiquidAccessories.mintAccessories()` 2. Adding rewards directly through `Rewards.addRewardsForAccessory()` Malicious users may frontrun calls when others are adding these rewards by equipping the item immediately before the reward is added and unequipping immediately after. A user may also acquire the accessory as part of the front-running.

LowBonding Curve Can only Be Set OnceAcknowledged

`defineBondingCurveParameter()` has the following requirement check: ``` require(bondingCurves[_accessoryId].curveParameter == 0, "Parameter already set"); ``` This means that the `curveParameter` can only be set once. This can potentially be an issue if the Vaporware team would either accidentally misconfigure the value of a certain accessory or would like to update the value of a certain accessory.

LowDraft Eip UsedAcknowledged

The contracts rely heavily on the `EIP-6551`, which has not officially been accepted yet. If changes are made to this standard before it is accepted, the contracts may not integrate well with other applications that expect the official standard to be used.

LowMissing Event EmissionsAcknowledged

In order to validate the proper deployment and initialization of the contracts, it is a good practice to emit events. Also, any important state transitions can be logged, which is beneficial for monitoring the contract, and also tracking eventual bugs or hacks. Below, we present a non-exhaustive list of functions that could emit events to improve application management: 1. `LiquidAccessories.defineBondingCurveParameter()` 2. `LiquidAccessories.setAvatarContract()` 3. `SoulboundAccessories.setAvatarContract()` 4. `MiladyAvatar.setOtherContracts()` 5. `TokenGatedAccount.execute()`

LowOwnership Can Be RenouncedAcknowledged

If the owner renounces their ownership, all ownable contracts will be left without an owner. Consequently, any function guarded by the `onlyOwner` modifier will no longer be able to be executed.

LowPrivileged Roles and OwnershipAcknowledged

Smart contracts will often have `owner` variables to designate the person with special privileges to make modifications to the smart contract. The following instances have been identified: 1. `LiquidAccessories` 1. `owner`: Define the bonding curve parameter, which determines how expensive it is to mint the accessory. 2. `SoulboundAccessories` 1. `miladyAuthority`: Onboard the Milady and mint its canonical accessories. This role could technically choose not to onboard selective Milady NFT IDs.

LowUnbounded Curve Parameter Can Lead to OverflowAcknowledged

The `defineBondingCurveParameter()` function allows setting of a curve parameter for every accessory. This curve paramter is used to calculate the price of the accessory needed for minting or refunded on burning. The following equation is used: ``` 0.005 ether + _curveParameter * _itemNumber * _itemNumber ``` As `_curveParameter` is an arbitrary constant, if set too high, the whole calculation can overflow and DoS the minting process.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (11)

  • https://github.com/deathtothecorporation/milady-os-contracts/src/TGA/IERC6551Executable.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/SoulboundAccessories.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/Deployer.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/TGA/IERC6551Account.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/LiquidAccessories.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/TGA/TokenGatedAccount.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/Rewards.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/TGA/IERC6551Registry.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/TGA/TBARegistry.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/HardcodedGoerliDeployer.sol at commit 32f97cd
  • https://github.com/deathtothecorporation/milady-os-contracts/src/MiladyAvatar.sol at commit 32f97cd

Part of Vaporware’s security record

Vaporware
Audits1 audit by 1 firmLast audit Oct 2023, by Quantstamp.
Critical findingsNo open critical findingsIn 1 report.
Open Vaporware’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us