web
web copied to clipboard
ensure zkSync checkout works with v2
User Story:
This ticket has 2 goals :
Disabling zksync checkout during merge
For Product @lthrift Currently, we have a toggle switch that would have to be set to true and the zkync option gets grey-ed out with a message saying this service is not available We just have to update this : https://gitcoin.co/_administrationperftools/staticjsonenv/5/change/
Once product tests this out on staging, a follow up ticket with messaging can be made
Migrating to zksync v2
This would involve exploring and migrating our zksync integration to v2 so that we can avoid downtime of any kind. More context on how to go about this is documented here: https://github.com/gitcoinco/web/issues/10825#issuecomment-1246252968
Even if we do the v2 migration -> me and @kevinrolsen recommend :
- sticking with the old version of zksync and using the disable flag
- roll out the v2 once the round ends -> (less surface area for errors -> impacts lesser customers)
Notes/Assumptions: From Matter Labs: Ciao guys, we wanted to give you an advance notice that around the time of the Merge, we will be suspending L2 operations for zkSync V1. This is to minimize any potential risks. A full communication with more details will follow but we wanted to give you a heads up. https://twitter.com/zksync/status/1567133179764686848?s=20&t=2eHURVxx7miOqPYqluB15A
For this one, we also need to have a status page that goes up and pauses contributions until the merge is complete.
Dropping a summary of the discussion with @vacekj to add more context
Just dropping a summary of the checkout cause I'll be signing off in a bit and don't want to be the blocker for this 😛
the zksync piece can be found while checking out at : https://gitcoin.co/grants/cart
- you add grant to cart
- checkout using zksync
- it checks balance of account and then redirects the user to zksync widget
- and then the actual contract interaction is done there
That widget is what we'd be looking to upgrade and my assumption is that we'd use https://portal.zksync.io/ (not sure though. i think we just have to do a version bump)
The code for checkout: https://github.com/gitcoinco/web/blob/master/app/assets/v2/js/cart.js
zksync init: https://github.com/gitcoinco/web/blob/master/app/assets/v2/js/cart-ethereum-zksync.js#L192
the script which we'd have to update: https://github.com/gitcoinco/web/blob/master/app/grants/templates/grants/cart-vue.html#L275
@lthrift I've updated the context of the ticket with additional steps on how we should tackle this
Notes from further discussion with @thelostone-mc ~
- ideally we would integrate v2 before the next round, but keep v1 as well for at least one more round, as we assume a lot of users are still gonna be using v1 (it will take some time to migrate funds to v2)
- if we keep v1, we would need to have some good UX for selecting between the two to minimize misclicks, misunderstandings and in the worst case, users losing funds or not completing the checkout.
- v2 currently doesn't have anything similar to the checkout experience that we are now using, will need to coordinate with zkSync team to see if they are planning a replacement, but this is a task for after this round ends.
Feel free to edit with any points I missed
@lthrift @GTChase for this one to move forward I think this will require some design input. Please see @vacekj comment above ☝
This is not ready yet btw so I would deprioritize this. Additionally are we looking to add another checkout option ? This is a new feature as we are adding another checkout method in eth.
@lthrift @GTChase
@lthrift - i will let you make the final prioritization call here..
My .02 is that deprioritizing makes the most sense since the round is over and users shouldnt be checking out right now. Also, the rest of the solution seems to be implementing ZKsynch v2, which seems to have a few blocking questions and it seems to be something that doesnt need to be ready for another couple of months.
This can be safely closed as we won't be integrating zkSync v2 into the legacy platform.