Wrapped SAFE tokens

The SAFE token itself is not transferable, however the tokens are all in safe multisig wallets. Since a multisig wallet can transfer ownership it seems possible to deposit the entire safe wallet into a wrapper contract that returns WSAFE tokens fore every SAFE token owned by the safe wallet.

In no way does this mean I want the token to be transferable or not. I have no opinion on this. However when I got the idea it seemed interesting enough to code. That’s why I created a proof of concept.

I did not deploy the contract since it is not audited, however I wanted to share it with the community.

5 Likes

Interesting idea. How would WSAFE tokens be backed 1:1 to SAFE tokens? A good analogy could be Rocket Pool ETH staking tokens, rETH, which were backed 1:1 by ETH held in the smart contract until withdrawals were enabled.

  • In order for a WSAFE token to be backed 1:1 by SAFE tokens, would the Safe account need to “pre-approve” a transfer transaction of SAFE tokens to whoever holds WSAFE, once SAFE becomes transferable?
  • Is this technically possible?

The WSAFE tokens can use any ratio. The POC uses a 1:1 backing because this seems simplest for when SAFE can be withdrawn. Yes rETH seems like a great analogy.

  • The safe ownership needs to be transferred to the wrapper contract. This allows the wrapper contract to transfer the SAFE tokens to itself when transferability is enabled. The wrapper contract needs to be the only owner because else it is possible for owners to front run the transfer of SAFE. De POC does not use a pre-approval because it can also be front run.
  • I implemented a POC that runs test cases on a mainnet fork, this proofs the viability.

Note that in the POC the safe wallet can always be returned to a preset owner by burning the required amount of WSAFE tokens when transferability is not enabled and after transferability is enabled the SAFE will be withdrawn to the wrapper contract and the safe wallet ownership returned to the preset owner.

Interesting, never thought of a viable way to bypass the transferability limitations set in stone by the DAO.

At first glance it seems feasible. The main condition I can think of to be considered are execution costs.
When transferring ownership to the wrapper contract, the cost of doing so is bore by the previous owner himself.
there needs to be a structure where a certain treasury is involved, denominated in ETH, to finance following:

  • ETH top-up onto multisigs for claiming SAFE once transferability is enabled

  • ETH top-up for changing ownership of multsig to a designated burner of WSAFE (reclaiming ownership over multisig by reverting WSAFE issuance as you mentioned)

In both cases, it applies to financing Gas fees to be able to execute said steps.
I could think of 2 ways to address this:

  1. Require a pre-defined amount of ETH to be inside the multisig prior to ownership transfer to wrapper contract (Not ideal since Gwei varies)
  2. Look at a way to calculated an estimation of it’s cost at the time a user looks to execute, and charge said estimated fee in advance, in order for the w.contract to be able to finance said execution.

Also, in my opinion, tokens subjected to vesting periods are to be considered into the equation.
Since transferring ownership includes any future claims on tokens to be vested, ignoring these may not be the best approach.
Alternative solutions could be:

  1. Reading SAFE interface for vested token amount. Generate both, wrapped SAFE (WSAFE) and vested wrapped SAFE (VWSAFE).
  2. Ignore all the above and let secondary market decide fair value of buying a wrap that includes SAFE as well as a tranche of SAFE under vesting terms.

Overall, these embedded fees, as well as the vesting period part of the SAFE tokens are adhered to, are 2 factors that would likely have a direct impact over pricing disparities between SAFE and WSAFE.
Fees are a direct issue the w.contract faces and should be addressed, while the ratio of vested tokens could be left to be decided by the secondary market on how to price.

The cost of wrapping in the POC is bore by the owner(s) of the safe depositing. The most expensive part (a deposit) is around 200k gas, this is comparable in cost to a uniswapV3 swap. The cost mostly come from the ownership transfer which requires the removal of other owners, check no fallback, check no modules, check no guard. The POC test case shows the gascost for all the wrapper functions.

I prefer the cost to be made by the owners themself because they can decide if it is in their interest to wrap and pay the gascost (at the prices of that time) or to hold the untransferable SAFE tokens.

Regarding the vested tokens I prefer simplicity by only minting WSAFE tokens based on balanceOf. On returning of the safe wallet to the owner only the amount wrapped at deposit is needed to be burned or transferred to the wrapper contract. This way the WSAFE is backed 1:1 and no secondary market value or VWSAFE is needed, because the vested tokens are returned to the owner with the return of the safe wallet.

A claim function could be added, only callable by the stored safe wallet owner and when transferability is disabled (similar to the deposit function). The function would claim the SAFE tokens for that safe wallet and mint WSAFE tokens for the caller. I have not implemented this because I have limited knowledge of the vesting contracts. Note that a safe wallet can always be returned to the preset owner allowing claiming of the vested SAFE tokens.

4 Likes

Awesome Idea thanks for your suggestion ! Reminds me of $SUDO , i think it could be easily implemented then launch a market for $SAFE token , i could help with the repo if needed but I really support you on this !

Cheers

1 Like

The repo I shared is a fully working wrapper with mainnet fork tests. The implementation contains the minimal functions (no claim(), permit() or other functions). I did this for safety, namely to make it as comparable to WETH as possible and make public review as easy as possible.

It is open source so it can be deployed by anyone. However I would really advise at minimal an extensive public review. So if you like the idea please review the code / add test cases.

1 Like

The idea of creating a wrapper contract to convert SAFE tokens into WSAFE tokens held in a multisig wallet is interesting and could provide additional utility to token holders.
Will definitely look into this and see where help can be inputted