Open blake-regalia opened 3 years ago
Thanks @blake-regalia for this proposal, we definitely want to see more wallets for Secret Network! :hearts:
I do have a few comments/questions for you to consider:
Map<string, string>
like localStorage
.Best of luck to you!
Thanks @assafmo for the questions and feedback! My responses to each item below:
Transaction Controls - I ran a small experiment that found the "Low" gas price setting on Keplr succeeds roughly 70% of the time for various contract executions, perhaps due to minGasPrice variability among validators? Although, I agree this is a fairly low priority item. The ability to speed up txns is also quite low priority as you mention blocks are rarely saturated, but this was added in anticipation of Secret Network seeing a period of exponential growth in the future. However the bulk of the work on pending transactions will be focused on the user experience as you mentioned: tracking progress, linking to secretnodes txn hash (not sure if secretnodes will 404 pending txns or not), providing ETAs, desktop notifications, etc.
Activity Log - These are terrific suggestions, consider them now part of the Activity Log (as well as support for importing keys from Keplr and secretcli).
Offline Signing - This will be included in the WisprWallet API in the same manner it is accessible via the Keplr API.
Local KV storage - Absolutely. Furthermore, any API feature requests from dApp developers are welcome as they are generally quite simple to add support for. The only requirements being that the feature has broad use case potential, is generic across dApps, and that it does not compromise the security of the wallet, nor the privacy of its user.
Keplr API - I should have mentioned in the original post that WisprWallet will be fully compatible with Keplr interface so existing apps can migrate or support both with minimal changes.
Staking and Governance transactions will be supported, and they will be classified as such in the Activity Log, however the interfaces for these features typically demand a larger viewing window than the browser extension overlay pane in order to browse stake pools and voting issues, either as a standalone webapp or a pop-out view of the extension. I personally believe that such interfaces should be delegated to independent webapps that connect to the user's wallet. The philosophy behind this approach is that users should get to decide which tool to use for their needs, and possibly incentivize competition among different providers, rather than hording market share with a native interface. However, I am willing to re-evaluate if people have strong opinions about this.
WalletConnect will be used for the mobile app version of WisprWallet beyond v1.0.
We will provide 24 months of official support and ongoing development after the release of v1.0.
Thanks for this well thought answer!
I don't mean to rush, but is there an expected timeline for when a decision might be reached? I just need to be able to plan for the upcoming 2022.
Apologies for the delay, there were a few unexpected issues that got our attention. We should have a response by the end of the week
BTW @blake-regalia please see this https://github.com/enigmampc/snip20-reference-impl/pull/22 regarding compatibility with Keplr's API (specifically the signAmino
function).
@assafmo I see now the potential for Permits, very cool. I would expect Permits to have first-class citizenship in the wallet ui and deserving of a store akin to the proposed Viewing Key Manager.
Me too! :star_struck:
~WisprWallet~ StarShell
This project has since renamed to "StarShell".
Tagline
A cross-platform, feature-packed, user-friendly, open-source web3 wallet designed exclusively for the Secret Network.
Motivation
In an effort to bring meaningful adoption to the Secret ecosystem, the Secret Network Grant Program has been funding the development of Secret dApps and dApp development tools. However, at the time of this writing, end users of these dApps are limited to (almost exclusively) using Cosmos' Keplr wallet extension for Chromium-based web browsers. While this option has been sufficient for early adopters, the road to meaningful adoption calls for a cross-platform web wallet that is well-suited for the unique Secret Network experience.
Detailed product description
The following section details the StarShell by describing each of its major features.
Token Manager
Users will benefit from being able to customize the display of their tokens in order to improve accessibility and reduce time spent searching. The Token Manager allows users to set custom labels for their tokens, upload custom icons, and add tags to create arbitrary groupings. The Token Manager will provide a queryable list of tokens that can be filtered by the following attributes:
The WisprWallet API will allow sites to prompt users to add tokens to their Token Manager, as well as suggest an icon to be used for the token (passed in and subsequently stored in the form of a data URL).
Context-Aware Token List
The Secret Network is destined for a lush ecosystem, full of dApps and SNIPs. However, this abundance may ultimately impede end users' ability to simply locate, monitor, or transfer individual tokens. WisprWallet's Context-Aware Token List aims to reduce this friction by providing a context-aware view which prioritizes the display of user's tokens based on the window's current web location, recent interactions, and user preferences. While some users may instead desire a global, predictable, and repeatable ordered list of their tokens, the wallet settings allows this view to be disabled while the default Token Manager remains always on.
Viewing Key Manager
Experienced users will greatly benefit from a streamlined interface for locating, identifying, exporting, and importing viewing keys within their web wallet. The WisprWallet Viewing Key Manager plans to address this gap by providing a queryable list of viewing keys that can be filtered by the same set attributes used in the Token Manager.
The Viewing Key Manager will also include the ability to export/import individual keys or multiple keys at once, in addition to supporting a separate account migration feature that includes the exporting/importing of all viewing keys.
The WisprWallet API will allow sites to provide viewing key suggestions individually, or in bulk, allowing the user to review the suggestions holistically.
Account Migration
When users need to relocate their wallet to another machine, the WisprWallet provides an account migration feature that will allow the user to export all tokens, viewing keys, and settings (or any combination thereof) to an encrypted file that can later be used to restore their wallet's data.
Address Book
Users may create entries for known accounts and contracts that will help ensure the correct receiver of transactions and SNIP transfers, as well as provide additional context when viewing tokens in their Token Manager and transactions in their Activity Log.
The WisprWallet API will allow sites to submit requests for adding entries to the user's Address Book for the purpose of providing additional context to transaction histories. User's can disable this feature entirely if they wish to avoid such prompts.
Transaction Controls
In addition to automatically calculating the approximate gas fees for a few basic levels of transaction priority, WisprWallet will also allow advanced users to manually adjust the gas amount and gas price for each transaction, or even manually specify a transaction fee. Once a transaction has been sent to the mempool, the user may choose to speed up the pending transaction by resubmitting it with a higher gas price or transaction fee, or attempt to cancel it. In some cases, the user may wish to continuously retry a timed out transaction until a validator with a lower minGasPrice accepts the transaction by adding it to the block. These sorts of advanced controls will help budget users manage their funds appropriately.
Activity Log
A history of events will allow the user to view and filter any of the following activities:
NFT Library
Users who possess SNIP-721 tokens will be treated to a multimedia gallery view of their NFTs. The NFT Library will extend the Token Manager view by allowing users to add custom labels/tags, query, and transfer directly from the gallery view.
And More
This wildcard subsection indicates that the development plan allows room for an additional major feature(s), as well as more nuanced ones, to be added to the project roadmap after Phase 0 begins. The project will largely be guided by feedback from the community and Secret Network team in order to deliver the best product.
Support
The final product will be a browser extension built atop the extensions API; the extension must be compatible with Firefox and all Chromium-based browsers (Google Chrome, Microsoft Edge, Brave, Opera, Vivaldi, Chromium for Linux, and others). The extension will also support Ledger Hardware Wallets (via the Cosmos App).
Beyond v1.0, WisprWallet will target mobile and desktop applications in the form of a Progressive Web App.
Go-to-Market plan
WisprWallet aims to be a contender for the leading web wallet used with Secret dApps. Upon delivering v1.0 of the product, we will seek official endorsement by the Secret Network team. We plan to develop this product as a series of deliverables to regularly report on its progress and allow for regular feedback from the Secret Network team so that they may help shape it. We also plan on gathering feature requests from the community.
Value capture for Secret Network ecosystem
A web wallet extension can define a user's experience with the Secret Network and its ecosystem. Since the web wallet interface is persistent across dApps, a well-designed and well-integrated application plays a major role in user's level of engagement on the network. We intend to raise the bar for web wallets everywhere and deliver an unparalleled user experience on the Secret Network.
Team members
Experience
I have been developing web-apps professionally for a little over 15 years now, with about 7 years of project management experience. I have a background in computer science (B.Sc.) and network security, and earned a PhD studying applied data science. Currently employed at NASA JPL as a Software Engineer doing mostly full-stack development and product architecture. I have been involved as a developer in the crypto space since 2017, although all projects thus far have been for personal use.
When I learned about Secret through @darwinzer0, I became very excited about the possibilities of programmable privacy and have been a frequent user ever since. Now, I see the development of WisprWallet as the best use of my skills in this space.
https://github.com/blake-regalia/ and https://blake-regalia.net/
Technologies
WisprWallet will be developed using Svelte with TypeScript and leverage established Cosmos libraries for interacting with the blockchain, performing cryptography, and using Ledger hardware wallets. The product will use the WebExtension API Polyfill to target both Firefox and Chromium-based browsers.
Development Roadmap
Considering the importance and exposure of a web wallet, development/scheduling of this product is open for suggestions from the Secret Network team, and the terms of this application are negotiable. In other words, I want to work with you to make the best product.
Phase 0: Procurement -- 4 weeks
Phase 1: Planning -- 3 weeks
Phase 2: MVP -- 6 weeks
Phase 3: Review -- 1 week
Phase 4: Beta -- 10 weeks
Phase 5: Production -- 8 weeks?
Requested payment and schedule:
We are requesting 60k SCRT in total to employ 3 skilled team members to develop the highest quality product while providing full transparency to the Secret Network team.
Additional Information
By outsourcing the development of a Secret Network wallet, the Secret Network team can focus on more urgent projects while still maintaining oversight of the wallet's production.
Feel free to reach out to me privately via email @ blake[dot]regalia[at]gmail[dot]com