Git Product home page Git Product logo

isabella232 / eth-berlin-location-recovery Goto Github PK

View Code? Open in Web Editor NEW

This project forked from 5afe/eth-berlin-location-recovery

0.0 0.0 0.0 170.34 MB

Recover your wallet simply and securely with 5 locations that you remember

Home Page: https://gnosis.github.io/eth-berlin-location-recovery/

License: GNU Lesser General Public License v3.0

JavaScript 46.20% Solidity 7.02% HTML 1.65% CSS 3.94% Kotlin 41.19%

eth-berlin-location-recovery's Introduction

Mapcovery

MapcoveryLogo

Problem: Key Management

  • Private keys are too cryptic too remember
  • Mnemonics are too hard to remember
  • Social recovery is not really a solution
    • Either you are not sure about who to trust
    • Do you really want to put the burden on friends/family?
  • Time lock is cool but not a recovery solution by itself
  • If just a single character is wrong, the private key is wrong and recovery is not possible.
  • Current key recovery solutions are either way less secure or less convenient

Inspiration

What it does & how does it work?

Prerequisite: You need a smart contract wallet (Gnosis Safe)

  • Select 5 locations of your choice.
  • Geo-data is hashed to derive the private key to recovery account
    • FOAM is used as decentralized geo-data provider
  • Smart contract module is attached to your Gnosis Safe
  • You can recover by entering the 5 Locations to get the private key for recovery account
  • Sign recovery and new Safe owners using recovery account

How we built it

  • We wrote a module for the Gnosis Safe smart contract in Solidity.
  • There are 2 use cases: (1) Set up mapcovery and (2) perform mapcovery to recover your wallet.
  • We wrote a webapp and an Android app to allow users to set up mapcovery and also to perform the actual recovery.

Challenges we ran into

  • Where would we get reliable geo-location data from?
  • What is a good number of locations to reach sufficient security?
  • How can we prevent front running?
  • How can we make sure to not leak the 5 locations when performing recovery?

Accomplishments that we're proud of

  • Finding another possible recovery method for smart contract wallets.
  • Finding a method that is relatively easy to remember but still provides enough security.
  • Solving for front-running through elegant smart-contract design.

What we learned

  • How FOAM really works incl. their APIs and why it is needed.
  • What ways of storing location data exist out there incl. their advantages and disadvantages.
  • How modules work with the Gnosis Safe
  • How to design and build prototypes with Adobe XD.
  • How hacking is enhanced when techno music is blasting through Factory the entire day.

What's next for Mapcovery

  • Allow users to configure more parameters:
    • Number of locations
    • Time-lock period
  • Add bonds required to trigger mapcovery
  • Allow recovery cancellations.
  • Allow Gnosis Safe users on iOS and Android to set up mapcovery, if they would like to do so.
  • Security audit of the contract code.
  • Add more locations to FOAM in order to increase security and make brute-force attacks harder.
  • Wait for FOAM's "Presence Claims" and integrate them. They are a ways to check that someone is actually present at a location. If enabled for Mapcovery, this would increase security even more by requiring physical presence at the recovery locations. This would decrease convenience but attacks get harder by multiple orders of magnitude.
  • Broaden use cases for Mapcovery (Other smart contract wallets, potentially even traditional EOA wallets, etc.)

Contributors

eth-berlin-location-recovery's People

Contributors

germartinez avatar rmeissner avatar tschubotz avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.