[DRAFT] [GF: Phase 1 Proposal] The Optimism Wallet for iOS

Project name: The Optimism Wallet for iOS

Author name and contact info:
Jann Driessen // https://twitter.com/JannDriessen

I understand that I will be required to provide additional KYC information to the Optimism Foundation to receive this grant: Yes

L2 recipient address: 0x790Cf41dB9F8078794b7837fe5942379f08112f0

Grant category: Phase 1

Is this proposal applicable to a specific committee? Tooling.

Project description (please explain how your project works):

The idea is to build an open source non-custodial wallet for Optimism on iOS - owned by the Optimism community. This creates an easy to use, secure alternative to any commercial wallet.

As a basis for development weā€™re going to use the eazy app (see TestFlight link down below) which is an app I developed that just got released as alpha version. This has the advantage of not having to reinvent the wheel for everything. There will be a few necessary changes to account for the Optimism network though.

With new technologies itā€™s unrealistic to create exact deadlines but the here is an outline of what could be the roadmap:

1st Milestone (the foundation)

  • Creating/importing a wallet
  • Sending/Receiving Eth
  • Sending/Receiving ERC-20 tokens
  • Gas Management
  • Biometric authentication

First Alpha Release (could be end of October/beginning of November)

Further features/milestones depend on third partiesā€™ schedules and the amount of work to integrate.

  • Direct swapping of tokens in-app (via 0x API References - 0x Documentation)
  • WalletConnect v2 (currently in RC) to connect with any supported dapp (walletconnect.com)
  • On-ramp via credit card or Apple Pay (might not be available until end of the year, as confirmed with wyre)

Note that the dates/months mentioned depend on the start of the project. For now it was assumed to start around the end of August.

You might say: Why iOS only? A lot of apps are written in ReactNative for cross-platform distribution - why not use that?
Because the mentioned eazy app which will be used as basis is already written in Swift (the native programming language for iOS apps). In my opinion using the native language of any operating system has several advantages which are better security, less dependencies (also improves security) and better support for the individual platform. The only disadvantage being the missing cross platform support. In most cases itā€™s not as good as most frameworks like to promote though. The often quoted advantage being faster when using cross-platform development I can say from experience turns out to not be true. Itā€™s mostly the same or sometimes even slower because of figuring individual details for the operating system - as the shared code will never be at 100%.

Also, just developing one platform first wonā€™t waste too many resources in case it turns out that people wonā€™t want to use an Optimism app.

Project links: n/a

(Additional) team member info
Just a lil bit on my background. Iā€™ve been working in app development for 10+ years. Besides development, Iā€™m also experienced in managing projects and teams. I have worked with various clients from startups to enterprises (janndriessen.com).

Beginning of 2021, I started deep diving into blockchains and crypto from a technical point of view by reading lots of books, doing tutorials and joining DAOs. Early on I had the idea that crypto needs to go mobile. Already in an ETHGlobal hackathon last year, I presented such an idea. Furthermore, I just released the alpha version of eazy - an app aiming to make crypto usage easy.

Iā€™m a core contributor (in part-time) at Index Coop (indexcoop.com) - where I work on the web app as a Frontend engineer - and a member of Developer DAO.

Additional team members will be chosen as needed. I can access a great pool of talented and experienced developers/designers as needed.

Please link to any previous projects the team has meaningfully contributed to:

https://claim.developerdao.com

Other non web3 projects could be presented on request.

Relevant usage metrics: n/a

Competitors, peers, or similar projects (please link):
Any wallet that supports Optimism.

Is/will this project be open sourced? Yes.

Optimism native?: Yes.

Date of deployment/expected deployment on Optimism: End of 2022 / Beginning of 2023.

Ecosystem Value Proposition:

The future is mobile. Nowadays already mobile usage on the internet is at least 50% if not higher of total users. ā€œAcross the globe, web-enabled devices such as smartphones and tablets have evolved into essential tools for communication, information, and entertainment alike.ā€ [2] So inevitably this will come for crypto as well.

Optimism solves the scalability issues that were present in the Ethereum ecosystem. A wallet can solve the usability issues that still persist today.

  • What is the problem statement this proposal hopes to solve for the Optimism ecosystem? How does your proposal offer a value proposition solving the above problem?
    Building an open source non-custodial wallet for Optimism on iOS - owned by the Optimism community - would guarantee that there is always an easy to use and secure option for any Optimism user. The project can be stirred into directions detached from interests of company owned wallets focusing on a high quality, fast, secure experience. It can also help to onboard new users to Optimism.

  • Why will this solution be a source of growth for the Optimism ecosystem?
    Having Optimism in your pocket at the palm of your hands, will make it more accessible to users. A wallet is the interface to the world of Optimism. It will strengthen the brand and trust by daily usage - in a convenient way. Additionally, it could serve as a foundation for further apps on Optimism, just as Uniswap and many other projects helped the crypto space flourish by open-sourcing their apps and code.

Has your project previously applied for an OP grant? No.

Number of OP tokens requested: 88,392 OP

Did the project apply for or receive OP tokens through the Foundation Partner Fund?: No.

Proposal for token distribution:

The tokens will be used solely for the development of the app as it will be easy for Optimism to self-promote/market the app. They could be sold if it serves as a salary to the individual but donā€™t have to.

The additional designers and developers donā€™t necessarily have to be one person. So this will be the budget for incentivizing people to help work on the project - as for most it will be a side project.

Role USD / month
1st Developer (me) 8,500
2nd Developer 4,000
Designer 4,000

Total

6 * $8,500 + 6 * $4,000 * + 6 * $4,000
= $99,000

At the time of writing this proposal, with a current OP token price of ~$1.12, this equals 88,392 OP.


Remarks

  • The above proposal is limited to building the foundation of the Optimism iOS wallet
  • Further support, bug fixes, and upgrades are not included but weā€™ll be happy to contribute further (e.g. based on new proposals)
  • We reserve the right to request more funds if the OP prices go too low and no longer meets the budget requirements

Resources

[1] Mobile Web Traffic Stats and Facts in 2022, 20+ Important Mobile Web Traffic Statistics (for 2022)

[2] Mobile internet usage worldwide - statistics & facts, Mobile Internet - Statistics & Facts | Statista

[3] Mobile vs Desktop Internet Usage, Mobile Vs. Desktop Internet Usage (Latest 2022 Data) - BroadbandSearch

[4] Info about the author Jann Driessen, https://janndriessen.com

[5] 0x API as proposed solution for adding direct swapping in-app, API References - 0x Documentation

[6] WalletConnect v2, to securely connect to / interact with dapps, https://walletconnect.com

2 Likes

Great proposal. My only concern is that the wallet space is very competitive and existing wallets tend to be quite sticky. Especially when many existing wallets are able to support multiple layer 2 solutions as well as mainnet. As a user I would prefer a wallet option that I could use cross chain. Although I will say I am not an expert in the wallet space so I will defer to other delegates who have more knowledge than myself here.

By the way, very impressive background and involvement in the space :slight_smile:

2 Likes

Thank you, ser! Thatā€™s definitely a very good point about multi-chain support. No need to be an expert, youā€™re representing a potential user, so this is perfect input.

In this regard the wallet would only serve as an alternative but as said as one thatā€™s always available and free of commercial interests by any third party. Also, at some point multi-chain support could be added or at least support for mainnet.

This comment also letā€™s me want to mention. Originally, I wanted to propose the grant for my mentioned app eazy. Since itā€™s very new though, I wasnā€™t sure if that would get enough votes. Iā€™d be happy to discuss that path as well and take the grant on adding Optimism to my app eazy.

1 Like

Updated proposal by adding the specific committee Tooling as per discussion on Discord.

Hi there,

First and foremost - great proposal. I think itā€™s an excellent idea overall and certainly something that the OP community deserves to have and to show to other people too. After reading your proposal, I have a few points that I would like to raise to yourself and the community reading this. I myself am head of mobile engineering at Pillar, and weā€™ve had a wallet app in both the App Store and Play Store since 2018ā€¦ and I can certainly say that weā€™ve learned some very hard, harsh lessons along the way - from Apple, Google, our community, the law and the ever-changing face of cryptocurrency. Iā€™ve noted some points in detail below.

Youā€™re going to need to support both Android and iOS

I know, I know. What you wrote above regarding why you should just go iOS only are, on the surface, the same reasons many others would give for supporting just iOS (or Android only for that matter). Any app that has big aspirations like what youā€™re proposing should, in my opinion, look beyond the idea of just developing for one platform. Itā€™s inevitable that youā€™re going to need to eventually develop the Android app - and when that time comes, itā€™s going to be a massive mountain to climb and the mental strain it would cause yourself and developers will make it a grind to even start. Iā€™ve been through this myself personally quite a few times. I would never recommend it. Having to maintain two codebases is a costly use of resources - and thatā€™s just trying to maintain feature parity. Secondlyā€¦

Choosing a side sends the wrong message about this app and Optimism

This is a big one. The psychology behind ā€œchoosing a sideā€ and the message this projects to the community and others outside of the community will definitely have unintended, lasting side effects. Even though your technical intentions may be innocent and mean well, it will never be seen this way. Today, choosing between iOS and Android is now a deeply personal and emotional choice. Youā€™ll never stop hearing about how you left out a large portion of the market - especially on social media where these sentiments will live forever. The project would be trolled for choosing to live inside the walled garden of Appleā€™s corporate machine instead of choosing an open source operating system. It will simply be taken personally. This does lasting damage to not just the brand but the good work you would be doing for the project and Optimism. Unless youā€™ve got an incredible social media and customer support team, expect to never hear the end of it. This pressure will eventually make it through.

Consider Flutter or React Native

Iā€™ve been through your journey. I started with native on both sides. Then started looking for cross platform solutions. They were all terrible - web based frameworks running in a webview with some bindings here and there. Some better solutions came along which did some native component rendering via transpiling of more popular languages. Fast forward to today and so many frameworks have come and gone. In my view there are only two options:

  • React Native: de facto standard for iOS and Android - but comes chained to Javascript. This is a problem because Javascriptā€™s loose programming language has brought with it a lack of code hygiene and standards which plague the language and everything built with it to this day. Typescript and Flow help but itā€™s a hard mindset to change. Uses Node.js as a development environment which can be painful when dealing with large projects with many dependencies (we live in fear of this). A large community and plentiful component ecosystem make this the defacto standard even with the problems.

  • Flutter: a true viable option. Exports to iOS, Android, web, Windows and macOS. Uses Dart programming language which is strongly typed from the start and maintained by Google with a custom rendering engine (see the demo which can toggle rendering of components between iOS or Material instantly). Everything is a widget, and famously known for being able to ā€œcontrol every pixelā€ targeting 60fps. The only downside is the package ecosystem isnā€™t as big as React Native, but the development experience is clean, fast and far, far, far less complicated than React Native. I have recently built a test wallet in Flutter and it is blazing fast.

The app will only ever be as good as the developers coding it

This one is obvious, but despite everything Iā€™ve said above, your app will only ever be as good as your developers. The speed and quality of development and this app will come from the knowledge of developers and the team as a whole. Iā€™ve managed many teams, constructed so many pipelines, worked with so many developers who have built React Native apps that feel native. On the other side of that coin - iā€™ve also worked with Swift / Objective-C developers that have built native apps that feel like the whole thing was running in a webview. Your point about the benefits of using the native language instead of a cross platform framework may be unfounded because no matter what you develop on any gated operating system, you need to use their operating system APIs which are protected by an underlying security model. The OS has the final say in what you can and cannot do, whether youā€™re building a native app, a website, a Flutter app on iOS or a React Native app on Android. You canā€™t just walk into your phoneā€™s HSM modules, for example (Titan for Google and Secure Enclave for Apple).

I know it sounds like Iā€™ve absolutely ripped this proposal apart, but please donā€™t see it like that. Iā€™m simply trying to stop you from making the same mistakes I have seen from personal experience and from running a wallet, with around 1000 daily active users, that has been through some hard times as the face of cryptocurrency has changed. Iā€™ve seen and experienced how emotionally driven app users can get, especially when their cryptocurrency is involved. Iā€™ve seen how our (and other popular wallets) social media teams struggle to defend themselves from the hoard. Our customer service teams regularly receive a battering and that is demoralizing to me, let alone the customer service team members.

I would love nothing more than an Optimism wallet app to hit the stores - and itā€™s for this reason alone Iā€™m writing this response. The Optimism community is a strong one and a much loved project. However this proceeds, please think of the long term. Include everyone, not just some.

Kio

1 Like