CollateralJoin
, ETHJoin
and CoinJoin
: CollateralJoin
- allows standard ERC20 tokens to be deposited for use with the system. ETHJoin
- allows native Ether to be used with the system. CoinJoin
- allows users to withdraw their system coins from the protocol into a standard ERC20 token (and vice-versa).safeEngine
- storage of the SAFEEngine
’s address.collateralType
- id of the CollateralType
for which a CollateralJoin
is created for.collateral
- the address of the collateralType
for transferring.systemCoin
- the address of the Coin
token.contractEnabled
- an access flag for the adapter.decimals
- decimals for the collateral type.join
- join tokens into the systemexit
- exit tokens from the systemdisableContract
- disable the adapter and only allow exit
sjoin
and exit
. CollateralJoin
is meant to change the SAFEEngine.tokenCollateral
and CoinJoin
changes SAFEEngine.coinBalance
s.CoinJoin
is a gateway (like an ATM) between the SAFEEngine
and the ERC20 representation of the system coin (cash). Governance has the power to deploy multiple CoinJoin
s and disable
previous Join
contracts. When a CoinJoin
is disabled, users can only burn ERC20 system coins for SAFEEngine.coinBalance
(join
coins into the system) and can no longer exit their SAFEEngine.coinBalance
in the ERC20 (thus, the "gateway" only allows for one way transfers).Coin
contract (possibly with blacklisting capabilities) and also a separate CoinJoin
for this new token. The previous CoinJoin
for the old Coin
contract can be disabled so that old ERC20 tokens can only be join
ed in the system. The process to upgrade between the old, permissionless Coin
and the new, permissioned one can be extremely complicated (although not impossible) because some coin holders may not want to do the switch.