MetaMask / snaps

Extend the functionality of MetaMask using Snaps
https://metamask.io/snaps/
Other
724 stars 557 forks source link

Long running Snaps for synchronous work #1604

Open david0xd opened 1 year ago

david0xd commented 1 year ago

This ticket should focus on implementing a solution that would allow Snaps to run for a longer period of time that is beyond the current timeout for execution. This is needed mostly for the use cases where cryptographic synchronous operations require longer periods of time to complete their work (e.g. ZK proofs, etc).

Proposal on how to achieve specified requirements:

Security related requirements:

Requirements for future improvements of the UX/UI: Track current state of long running execution requests in order to provide that information to the UI and other platform's architectural elements, in order to improve user experience.

Notes: Consider having e2e testing strategy for improvised use case.

Related resources: https://github.com/MetaMask/snaps/issues/1483 https://github.com/MetaMask/MetaMask-planning/issues/517 Long running snaps research conclusion document: https://docs.google.com/document/d/1BsL75IiepnS1rbfzOVJ5xX3YS3W79Hmyk725lydsqq8/edit

kenhkan commented 1 year ago

From standup: David needs some input from Erik on endowment copy, etc

eriknson commented 1 year ago

Suggested metadata

Montoya commented 1 year ago

Will create another ticket in MetaMask-planning and mark this as blocked

david0xd commented 1 year ago

This ticket is blocked since September 21st because of architectural obstacle with not having proper requestId communicated between the Snap Controller and Execution Environment

Several approaches to this are presented and communicated on Slack channel in the following thread: https://consensys.slack.com/archives/C02GL38PLE6/p1695301614878949 Since all known solutions to this have tradeoffs it is left to be determined which one would be or if should be acceptable or to search for new ideas around the problem.