Photo Seeds 🖼 🌱 An easier way for humans to create and recover wallets

Overview

Photo Seeds 🖼 🌱

An easier way for humans to create and recover wallets

 

How do you try out Photo Seeds?

  1. Install Flutter: https://docs.flutter.dev/get-started/install
  2. Run: git clone https://github.com/mikemilla/photo-seeds.git
  3. Open the folder you cloned
  4. Run: flutter pub get
  5. Run: flutter run

This demo runs on iOS and Android and uses a few common libraries to make it functional. See the pubspec.yaml for the libraries used.

 

Why does Photo Seeds exist?

"Seed Phrases" are weird, scary, and impractical for most people. Photo Seeds is an attempt at making self-owned wallets easier to remember and recover.

The purpose of "mnemononic seed phrases" is to create a secure, unique and repeatable "password" that humans can use to recover a wallet. The current conventional user experience of this is not ideal. Most people have no idea what "seed phrases" mean, why they can't pick the words, why there are (usually) 12 words, why they should write them down, and why they should not take a screenshot of them. Another issue is that it's hard to memorize a seed phrase. It's not impossible, but average people won't remember them. If someone needed to recover a wallet, don't have or remember their seeds, and did have their phone with access to iCloud or Google Photos (a decently common scenario), seed phrases not ideal.

If we are going to get 8 billion humans capable of using self-owned crypto wallets, we need to make this experience more humanlike!

"A picture is worth a thousand words" and humans are visual, story driven creatures. Odds are much higher that someone will remember a photo or a number of photos, and the order of those photos before they remember 12 random words. I'm sure you reading this have some images in your photo library that only you would remember and you may have a 12 word seed phrase that you don't remember.

Photo seeds gives people an easier way to remember how to login to a crypto wallet, without requiring people to write anything down.

 

Are Photo Seeds secure?

The image to hash function is probably more secure than a single word, however, that doesn't mean that this is overall more secure than traditional seed phrases, in fact, it probably is less secure. There are other ways someone could try and steal another user's seeds.

Gaining access to someone's photo library via iCloud or Google Photos, downloading all the images, and writing a brute force script would eventually try all the image hash combinations could steal another user's seeds. This isn't ideal, but probably is ok for a decently large number of people. Apple and Google have very robust security measures and Photo Seeds indirectly depend on their security procautions.

If the idea of converting more humanlike things into seed phrases catches on, an open source, publicly trusted library for this type of thing is probably needed. At this point, giving developers access to the user's photo files is a security concern. How do we prevent wallet developers from stealing all the photo files and trying the combinations to steal user's wallets? Maybe we create a token with voting rights to make commits to the library? Someone probably needs to moderate what is safe for developers to use in their apps so people's can trust this type of feature.

 

How can we make idea even better?

💡 Use bitmaps instead of files

Currently, the image files themselves are hashed. This is ok, but using the bitmaps of the images without the metadata of the files and determining the entropy of the bitmap may be better. The reason I think that approach might be better is because there is a higher chance of that working across Apple's iCloud and Google Photos. Images without all the filemeta data will have a different hash output and the ideal user experience would be cross platform while still being highly secure.

 

💡 Create a library that is easy to add to apps

This repo is just a proof of concept of this idea. To make this available for actual usage in wallets, we need to create a library and pub.dev, npm, gradle, swift package manager, or cocoapods package.

The security concerns of this are mentioned above.

 

💡 Support other blockchains

This version only supports Bitcoin wallets, but Ethereum, Solana, etc are all possible with this same type of approach, they just needed to be coded up.

 

💡 Support other types of media to create seeds

What are other things humans can relate more to than random words? Some example could be quotes, lyrics, video timestamps, tweets, links on the web, hex colors, drawing images and having device side machine learning determine the object or something else!

There are plenty of other things humans are more likely to remember than seed phrases. Finding the right balance of easy to remember, low friction user experience to recovery and security is the challenge.

 

How can you contribute?

Feel free to fork this repo, open a PR, create a library, issues, or message me on Twitter.

Hopefully this idea can start point us in the right direction of making user experience a higher priority in the crypto world!

https://twitter.com/killamikemilla

You might also like...

This package helps developer to sort the flutter/dart packages and plugins alphabetically, This makes it easier when managing too many packages and when working with teams

This package helps developer to sort the flutter/dart packages and plugins alphabetically, This makes it easier when managing too many packages and when working with teams

Package helps to sort the flutter/dart packages and plugins alphabetically, This makes it easier when managing too many packages and when working with

Dec 21, 2022

Addons to supabase dart (and Flutter), to make development easier.

supabase_addons Make great apps with a great backend! Supabase is an open source Firebase alternative. It has support for auth, database and storage u

Dec 3, 2022

A wrapper around Navigator 2.0 and Router/Pages to make their use a easier.

A wrapper around Navigator 2.0 and Router/Pages to make their use a easier.

APS Navigator - App Pagination System This library is just a wrapper around Navigator 2.0 and Router/Pages API that tries to make their use easier: 🔧

Oct 17, 2022

Powerful, helpfull, extensible and highly customizable API's that wrap http client to make communication easier with Axelor server with boilerplate code free.

Powerful, helpfull, extensible and highly customizable API's that wrap http client to make communication easier with Axelor server with boilerplate code free.

flutter_axelor_sdk Powerful, helpful, extensible and highly customizable API's that wrap http client to make communication easier with Axelor server w

Dec 25, 2022

A draggable Flutter widget that makes implementing a Sliding up and fully-stretchable much easier.

A draggable Flutter widget that makes implementing a Sliding up and fully-stretchable much easier.

Draggable Home A draggable Flutter widget that makes implementing a Sliding up and fully-stretchable much easier! Based on the Scaffold and Sliver. Us

Dec 12, 2022

A set of Flutter widgets that makes grouping Checkboxes and Radio Buttons much easier!

A set of Flutter widgets that makes grouping Checkboxes and Radio Buttons much easier!

grouped_buttons A set of Flutter widgets that makes grouping Checkboxes and Radio Buttons much easier! Installing Add the following to your pubspec.ya

Dec 28, 2022

Quickly is build as a tool to enhance your Flutter UI development experience and make code easier

Quickly is build as a tool to enhance your Flutter UI development experience and make code easier. It is highly inspired by Bootstrap and Tailwind CSS. It also provide lots of extension methods on String, List and Map.

Oct 24, 2022

💙🔥 FlutterFire commons repository, makes FlutterFire app development faster, easier, and more fun!

💙🔥 FlutterFire commons repository, makes FlutterFire app development faster, easier, and more fun!

Dec 1, 2022

Nebula makes your Flutter development journey easier by providing helper widgets, utilities and abstractions.

Nebula makes your Flutter development journey easier by providing helper widgets, utilities and abstractions.

Apr 21, 2022
Owner
Mike Miller
Designer + Engineer
Mike Miller
The easiest way to create your animated splash screen in a fully customizable way.

Animated Splash Screen Check it out at Pub.Dev Do it your way Assets image Custom Widget Url image IconData Or just change PageTransition and/or Splas

Clean Code 104 Nov 10, 2022
Google I/O 2021 Photo Booth built with Flutter and Firebase

I/O Photo Booth A Photo Booth built with Flutter and Firebase for Google I/O 2021. Try it now and learn about how it's made. Built by Very Good Ventur

Flutter 830 Dec 29, 2022
A Fluttter based notes app with photo-notes support!

Tizeno Tizeno is a beautiful open-source notes app for Android. It is built with Dart on top of Google's Flutter Framework. Tizeno helps one create qu

Hash Studios 24 Nov 10, 2022
Flutter photo - video from album by flutter

archived The package is archived. Please use flutter_wechat_assets_picker. photo image picker, multi picker support ios icloud support video use flutt

Caijinglong 300 Dec 8, 2022
Immich - Self-hosted Photo backup solution directly from your mobile phone

IMMICH Self-hosted Photo backup solution directly from your mobile phone. Note T

Alex 6.6k Dec 31, 2022
A Flutter plugin to rotate, resize, move, delete text, photo or any other widget.

sticker_view A Flutter plugin to rotate, resize, move, delete any text, image or any other widget. Available Features ✅ Rotate ✅ Resize ✅ Move ✅ Layer

Gopal Dhola 14 Nov 26, 2022
NextPhoto - A Flutter Instagram look-alike photo blog application

A Flutter Instagram look-alike photo blog application. Uses jsonplaceholder for mock data. Please refer to coding task for info about desired features.

Sebastian 3 Aug 22, 2022
A photo gallery mobile application with Flutter.

Photo Gallery Photo Gallery mobile application. Description Photo Gallery is a cross platform mobile application made with Flutter. This application u

null 4 Dec 23, 2022
Flutter ui boilerplate is easiest way to create new flutter project with clean code and well organized file folder.

Flutter UI Boilerplate "Sharing for fun" Flutter ui boilerplate is easiest way to create new flutter project with clean code and well organized file f

Dimas Ibnu Malik 122 Dec 1, 2022
Use the easiest way to create a dotted line view 👀!

fdottedline Use the easiest way to create a dotted line view ?? ! [FDottedLine] provides developers with the ability to create dashed lines. It also s

Fliggy Mobile 122 Jul 17, 2022