Platform: Code4rena
Start Date: 28/11/2022
End Date: 09/12/2022
Period: 11 days
Status: Completed
Pot Size: $192,500 USDC
Participants: 106
Reporter: liveactionllama
Judge: LSDan
Id: 186
League: ETH
Trust | 1/106 | $61,283.00 | 17 | 4 | 3 | 13 | 6 | 0 | 0 | 0 |
minhquanym | 2/106 | $13,222.40 | 4 | 3 | 1 | 1 | 0 | 0 | 0 | 0 |
unforgiven | 3/106 | $7,846.74 | 9 | 3 | 0 | 5 | 1 | Grade B | 0 | 0 |
Jeiwan | 4/106 | $6,908.91 | 7 | 2 | 0 | 4 | 1 | Grade B | 0 | 0 |
IllIllI | 5/106 | $6,691.89 | 6 | 1 | 0 | 3 | 1 | Grade A | Grade A | 0 |
csanuragjain | 6/106 | $5,428.52 | 9 | 3 | 0 | 5 | 0 | Grade B | 0 | 0 |
0x52 | 7/106 | $4,903.26 | 5 | 1 | 0 | 3 | 1 | Grade B | 0 | 0 |
RaymondFam | 8/106 | $4,083.64 | 6 | 1 | 0 | 3 | 1 | Grade B | Grade B | 0 |
Dravee | 9/106 | $3,787.38 | 4 | 1 | 0 | 1 | 0 | Grade A | Grade A | 0 |
cccz | 10/106 | $3,241.84 | 4 | 2 | 0 | 1 | 0 | Grade B | 0 | 0 |
Auditor per page
The C4audit output for the contest can be found here.
Note for C4 wardens: Anything included in the C4udit output is considered a publicly known issue and is ineligible for awards.
ParaSpace is a decentralized lending protocol that allows users to borrow and lend against Non-Fungible and Fungible tokens alike. ParaSpace allows users to tap into otherwise-unused capital to fund further investments and earn yields on the same.
Website | White Paper | API Docs | Chat
Contract | SLOC | Purpose | Libraries used |
---|---|---|---|
paraspace-core/contracts/misc/marketplaces/LooksRareAdapter.sol | 89 | Implements the NFT <=> ERC20 exchange logic via LooksRare marketplace | @LooksRare/contracts-exchange/* |
paraspace-core/contracts/misc/marketplaces/SeaportAdapter.sol | 112 | Implements the NFT <=> ERC20 exchange logic via OpenSea Seaport marketplace | @ProjectOpenSea/seaport/* |
paraspace-core/contracts/misc/marketplaces/X2Y2Adapter.sol | 92 | Implements the NFT <=> ERC20 exchange logic via X2Y2 marketplace | @openzeppelin/* |
paraspace-core/contracts/misc/NFTFloorOracle.sol | 337 | /// @notice Offchain clients can update the prices in this contract. The public can read prices | @openzeppelin/* |
paraspace-core/contracts/misc/ParaSpaceOracle.sol | 163 | Contract to get asset prices, manage price sources and update the fallback oracle | @openzeppelin/* |
paraspace-core/contracts/misc/UniswapV3OracleWrapper.sol | 307 | @Uniswap/v3-core/* | |
paraspace-core/contracts/protocol/configuration/PoolAddressesProvider.sol | 244 | Main registry of addresses part of or connected to the protocol, including permissioned roles | @openzeppelin/* |
paraspace-core/contracts/protocol/libraries/logic/AuctionLogic.sol | 114 | Implements actions involving NFT auctions | @openzeppelin/* |
paraspace-core/contracts/protocol/libraries/logic/BorrowLogic.sol | 159 | Implements the base logic for all the actions related to borrowing | @openzeppelin/* |
paraspace-core/contracts/protocol/libraries/logic/FlashClaimLogic.sol | 71 | @Chainlink/vrf/* | |
paraspace-core/contracts/protocol/libraries/logic/GenericLogic.sol | 442 | Implements protocol-level logic to calculate and validate the state of a user | @openzeppelin/* |
paraspace-core/contracts/protocol/libraries/logic/LiquidationLogic.sol | 645 | Implements actions involving management of collateral in the protocol, the main one being the liquidations | @openzeppelin/* |
paraspace-core/contracts/protocol/libraries/logic/MarketplaceLogic.sol | 482 | Implements the base logic for all the actions related to NFT buy/accept bid | @openzeppelin/* |
paraspace-core/contracts/protocol/libraries/logic/PoolLogic.sol | 175 | Implements the logic for Pool specific functions | @openzeppelin/* |
paraspace-core/contracts/protocol/libraries/logic/SupplyLogic.sol | 545 | Implements the base logic for supply/withdraw | @openzeppelin/* |
paraspace-core/contracts/protocol/libraries/logic/ValidationLogic.sol | 968 | Implements functions to validate the different actions of the protocol | @openzeppelin/* |
paraspace-core/contracts/protocol/pool/DefaultReserveAuctionStrategy.sol | 94 | Implements the calculation of the current dutch auction price | @openzeppelin/* |
paraspace-core/contracts/protocol/pool/PoolApeStaking.sol | 381 | ParaSpace Ape Staking Pool | @openzeppelin/* |
paraspace-core/contracts/protocol/pool/PoolCore.sol | 678 | Main point of interaction with an ParaSpace protocol's market | @openzeppelin/* |
paraspace-core/contracts/protocol/pool/PoolMarketplace.sol | 114 | Main point of interaction with an ParaSpace protocol's market | @openzeppelin/* |
paraspace-core/contracts/protocol/pool/PoolParameters.sol | 224 | Main point of interaction with an ParaSpace protocol's market | @openzeppelin/* |
paraspace-core/contracts/protocol/pool/PoolStorage.sol | 19 | Contract used as storage of the Pool contract. | @openzeppelin/* |
paraspace-core/contracts/protocol/tokenization/base/MintableIncentivizedERC721.sol | 434 | Basic ERC721 implementation | @openzeppelin/* |
paraspace-core/contracts/protocol/tokenization/NToken.sol | 267 | Implementation of the NFT derivative token for the ParaSpace protocol | @openzeppelin/* |
paraspace-core/contracts/protocol/tokenization/NTokenApeStaking.sol | 145 | Implementation of the NToken for the ParaSpace protocol | @yoga-labs/ApeCoinStaking/* |
paraspace-core/contracts/protocol/tokenization/NTokenBAYC.sol | 65 | Implementation of the NToken for the ParaSpace protocol | @openzeppelin/* |
paraspace-core/contracts/protocol/tokenization/NTokenMAYC.sol | 65 | Implementation of the NToken for the ParaSpace protocol | @openzeppelin/* |
paraspace-core/contracts/protocol/tokenization/NTokenMoonBirds.sol | 87 | Implementation of the interest bearing token for the ParaSpace protocol | @openzeppelin/* |
paraspace-core/contracts/protocol/tokenization/NTokenUniswapV3.sol | 109 | Implementation of the interest bearing token for the ParaSpace protocol | @Uniswap/v3-core/* |
paraspace-core/contracts/protocol/tokenization/libraries/MintableERC721Logic.sol | 427 | Implements the base logic for MintableERC721 | @openzeppelin/* |
paraspace-core/contracts/protocol/tokenization/libraries/ApeStakingLogic.sol | 197 | Implements the base logic for ApeStaking | @yoga-labs/ApeCoinStaking/* |
paraspace-core/contracts/ui/WPunkGateway.sol | 156 | Implements the acceptBidWithCredit feature. AcceptBidWithCredit allows users to | @openzeppelin/* |
The issue raised in PR https://github.com/para-space/paraspace-core/pull/7 has been already identified and evaluated, therefore, not eligible for rewards.
- If you have a public code repo, please share it here: https://github.com/para-space/paraspace-core - How many contracts are in scope?: 32 - Total SLoC for these contracts?: 8408 - How many external imports are there?: 12 - How many separate interfaces and struct definitions are there for the contracts within scope?: 44 interfaces, 35 struct definitions - Does most of your code generally use composition or inheritance?: Yes - How many external calls?: 306 - What is the overall line coverage percentage provided by your tests?: 85 - Is there a need to understand a separate part of the codebase / get context in order to audit this part of the protocol?: No - Please describe required context: N/A - Does it use an oracle?: Yes. Chainlink + offchain client - Does the token conform to the ERC20 standard?: Yes, plus ERC-721 - Are there any novel or unique curve logic or mathematical models?: https://docs.para.space/para-space/para-space/risk-framework - Does it use a timelock function?: No - Is it an NFT?: Yes. It does NFT lending & marketplace - Does it have an AMM?: Yes - Is it a fork of a popular project?: Yes. Forked from AaveV3 protocol. https://docs.para.space - Does it use rollups?: No - Is it multi-chain?: No - Does it use a side-chain?: No
cd paraspace-core # create an empty .env file (tests should work fine with it being empty) touch .env # install dependencies yarn # build contracts yarn build # run tests make fast-test