safe-global / safe-apps-list

MIT License
20 stars 30 forks source link

Add UMA's oSnap manager #287

Closed daywiss closed 9 months ago

daywiss commented 1 year ago

Revision checks

Name/Description

oSnap oSnap is a DAO tool integrating with Snapshot for on-chain governance. It decentralizes processes, ensures quick decisions, and is secured by UMA.

This application specifically will allow configuration, installation, and deactivation of the oSnap feature on a users safe.

Type

Compatible Networks

Audit document

https://blog.openzeppelin.com/uma-optimistic-governor-audit https://blog.openzeppelin.com/uma-optimistic-governor-incremental-audit

Code for review

https://github.com/UMAprotocol/osnap-safe-app

relevant function links:

  1. Forming transaction to send to safe - https://github.com/UMAprotocol/osnap-safe-app/blob/main/src/libs/ogUtils.ts#L68
  2. Enabling oSnap - https://github.com/UMAprotocol/osnap-safe-app/blob/main/src/hooks/OptimisticGovernor.ts#L82
  3. Disabling oSnap - https://github.com/UMAprotocol/osnap-safe-app/blob/main/src/hooks/OptimisticGovernor.ts#L234
  4. safe autoconnector - https://github.com/UMAprotocol/osnap-safe-app/blob/main/src/hooks/useSafeAutoConnect.ts

IPFS hash/App URL

https://osnap.uma.xyz

Team information

yagopv commented 11 months ago

Hey @daywiss I'm taking a look to the Safe App code. I can see a bunch of connection different options as:

Are you using rainbow right? I can see the safe-apps-sdk instantiated but not used

Have you got any documentation about how the Safe App works?

daywiss commented 11 months ago

Hey @daywiss I'm taking a look to the Safe App code. I can see a bunch of connection different options as:

@gnosis.pm/safe-apps-sdk Not used @rainbow-me/rainbowkit => Currently used @wagmi/connectors Not used? Are you using rainbow right? I can see the safe-apps-sdk instantiated but not used

Have you got any documentation about how the Safe App works?

Hello @yagopv, thanks for taking a look, the app was originally started with wagmi and rainbowkit. You can see the configuration for both in the provider file here.

You can see here where we use the safeSdk to enable oSnap here and disable it here

We currently have documentation for the current oSnap app here. Documentation will be updated when we are nearing launch of this app. Happy to add any docs based on what you think is necessary. This app does rely on the user entering through a custom link from their snapshot.org space, and much of the process will be documented there as well ( pending approval on dedicated snapshot app ).

yagopv commented 11 months ago

As a improvement, you should be able to use the wagmi connector for sending transactions instead instantiating the Safe SDK explicitly as you mention in the TODOs

Some help can be found here:

JagoFigueroa commented 11 months ago

Good morning! QA from safe apps team here 😄 I was able to follow this nice video posted above to test the implementation but I was wondering, how does the safe app come into play? I seem to always be stuck on this screen (I tried on goerli with demo.snapshot):

Screenshot 2023-09-22 at 13 01 56

Is this expected for now? If you could share some pointers that would be awesome 🙏

daywiss commented 11 months ago

As a improvement, you should be able to use the wagmi connector for sending transactions instead instantiating the Safe SDK explicitly as you mention in the TODOs

Ok yes, will look into it, thanks for references

Good morning! QA from safe apps team here 😄 I was able to follow this nice video posted above to test the implementation but I was wondering, how does the safe app come into play? I seem to always be stuck on this screen (I tried on goerli with demo.snapshot):

Yes, there is a bit of difficulty QAing this new app because its needs some yet to be completed other parts to work correctly. Our existing oSnap flow on the safe side it uses Zodiac, and on the snapshot side it uses Safesnap. The documentation you followed was probably in this flow, and we are trying to improve that now with dedicated apps.

We are trying to simplify onboarding people to oSnap by now having dedicated plugins in both Safe ( this proposal ) and snapshot ( WIP ). In this new flow people will start in their snapshot space and will be deep linked into the safe oSnap plugin with a custom URL, which gets you past the screen you keep running into. From here they will be presented with a much simplified enable / disable button. The screen you are seeing is the default when we cannot detect that you have arrived from a snapshot space.

You can preview how it will work here: https://www.figma.com/proto/6fr3DCdZ338FNQg5wG6n1r/UMA-UI-Playground?node-id=142-11894&starting-point-node-id=142%3A11894&show-proto-sidebar=1

To wrap things up, we have completed the Safe app part of our onboarding flow, but are still in progress with snapshot as its much more involved. We may need to work on a special setup so that you can explore the rest of this app, let me get back to you on that.

daywiss commented 11 months ago

Hello @yagopv and @JagoFigueroa. We have been working diligently to add in the missing piece for your QA process. We now have a deployment of the necessary changes to snapshot up, which will enable the full demo of this app. I've created a doc that will walk you through the process. Please take a look here and let me know if you have any questions or run into issues.

JagoFigueroa commented 11 months ago

Very useful, thanks! If I understand correctly the app cannot be used yet on Snapshot prod environment right? For us to list it we will need to wait so that the changes of that deployment you mention are live there 😢 Could you let us know when that happens?

Following the guide, unfortunately I am stuck on the ENS register step. I do not know why but it does not fetch any of my available Goerli registered domains whereas on demo.snapshot it does for example. Maybe only the demo app has goerli support?

Cheers!

daywiss commented 11 months ago

Following the guide, unfortunately I am stuck on the ENS register step. I do not know why but it does not fetch any of my available Goerli registered domains whereas on demo.snapshot it does for example. Maybe only the demo app has goerli support?

@JagoFigueroa thanks for taking a look. You are right, i had the wrong link in there. I've updated the doc to point to the demo.snapshot deployment which should work with Goerli ENS.

Very useful, thanks! If I understand correctly the app cannot be used yet on Snapshot prod environment right? For us to list it we will need to wait so that the changes of that deployment you mention are live there

Yes definitely will let you know. We don't actually want it listed just yet, but we do want approval so we can minimize the time it takes to turn the app on when we are ready. Its a bit of a coordination problem since we need to work with your team and the snapshot team.

daywiss commented 11 months ago

@JagoFigueroa just want make sure you don't have any more blockers for testing. the doc has been linked to a mirror of the snapshot demo site with our snapshot plugin enabled. You should be able to get past the ENS issue you were seeing.

I don't think that having our plugin on snapshot production should be a blocker for running through this app currently, but let me know if you want to schedule a call or something like that, we can walk through the process. We are hoping to get approval for this safe app by next Wednesday 10/18.

JagoFigueroa commented 11 months ago

All good @daywiss! No blockers for my testing 😄 In terms of us listing the app (and thinking of our users, so that they do not have to rely on test envs to use the app) as long as you are ✅ on snapshot prod we should be good to list it after a final quick check from myself and the team.

Cheers!

daywiss commented 9 months ago

@JagoFigueroa we are now live on snapshot, so you can run through a full production flow of the app. heres an example of a live link: https://app.safe.global/apps/open?safe=eth%3A0x98AbeA11604803448636A684A695A04c66433Ca7&appUrl=https%3A%2F%2Fosnap.uma.xyz%2F%3FspaceName%3Duma%2Bdev%26spaceUrl%3Dhttps%253A%252F%252Fsnapshot.org%252F%2523%252Fumadev.eth

If this looks good to you we are ready to be added to the app store.

dasanra commented 9 months ago

App was added.