Adapters and Auction contracts for each specific collateral type
- Module Name: Collateral Module
- Type/Category: DSS —> join.sol, clip.sol
The collateral module is deployed for every new
ilk(collateral type) added to
Vat. It contains all the adapters and auction contracts for one specific collateral type.
For other information related to the collateral module, read the following resources:
The Collateral Module has 3 core components consisting of the
Join- adapters that are used to deposit/withdraw unlocked collateral into the
Vat. Join contains three smart contracts:
Each of the
joincontracts are specifically used for the given token type to be
join'ed to the
vat. Due to this fact, each
joincontract has slightly different logic to account for the different types of tokens within the system.
Join- the purpose of join adapters is to retain the security of the system, allowing only trusted smart contracts to add/remove value to/from the
Vat. The location of collateral deposited/locked in Vaults is in the respective Join adapter.
- When a user desires to enter the system and interact with the
dsscontracts, they must use one of the
- If there was a contract bug in a
joincontract and a user was to call
joinby accident, they can still retrieve their tokens back through the corresponding
exitcall on the given
There could potentially be a
vatupgrade that would require new
joincontracts to be created
gemcontract were to go through a token upgrade or have the tokens frozen while a user's collateral was in the system, there could potentially be a scenario in which the users were unable to redeem their collateral after the freeze or upgrade was finished. This seems to be a small risk though because it would seem likely that the token going through this upgrade would want to work alongside the maker community to be sure this was not an issue.
Potential Phishing Attacks
As the MCD system evolves, we will see many more
joincontracts, user interfaces, etc. This surfaces the potential for a user to have their funds stolen by a malicious
joincontract which would send tokens to an external contract or wallet, instead of the