Giter VIP home page Giter VIP logo

memtrip / eosreach-ios Goto Github PK

View Code? Open in Web Editor NEW
13.0 3.0 2.0 3.1 MB

An EOS wallet developed in Swift using the eos-swift SDK and the model view intent (MVI) design pattern. This wallet serves as a blueprint for how other developers might want to utilise eos-swift to develop native iOS apps that consume the EOS blockchain.

Home Page: http://www.memtrip.com

License: GNU General Public License v3.0

Ruby 0.13% Swift 99.87%
eos-swift eosio swift mvi mvi-architecture

eosreach-ios's Introduction

EOSREACH

An EOS wallet developed in Swift using the eos-swift SDK.

Foreword

The current generation of browser plugin dependant DApps are not fit for mass market consumption, the average consumer has little interest in the fact that the products they use are running on top of a blockchain technology. We do not see a future for generic wallet apps as a gateway to Dapps running in web views, in comparison to native mobile experiences, the UX is slow and cumbersome.

This wallet serves as a blueprint for how other developers might want to utilise eos-swift to develop native iOS apps that consume the EOS blockchain.

Design pattern

The app uses the model view intent (MVI) design pattern, a unidirectional data flow driven by a single Rx PublishSubject.

Key management

Import private key

When an EOS private key is imported, the EOS public key counterpart is resolved and a new EllipticCurveKeyPair is generated in SecureEnclave. The EOS private key bytes are encrypted by this SecureEnclave backed keypair, the base58 EOS public key and the encrypted bytes are stored as a key/value pair.

Create account

The memtripissue service is used to create an account on behalf of the user, in this scenario a new EOS key pair is generated on the device and the private key is encrypted using the aforementioned mechanism. The EOS public key counterpart as base58 is sent to the memtripissue service to be assigned as both the owner and active authority of the new account. Your private key NEVER leaves your device during this process.

Transaction signing

When an EOS private key is required to sign a transaction, the base58 EOS public key counterpart is used to fetch the EllipticCurveKeyPair encrypted private key bytes. To decrypt the private key bytes, the user must enter a pin or verify a biometric. The decrypted private key bytes are used to sign the pending transaction, the private key bytes will only remain in memory during the transaction signing process.

Tests

The EarlGrey tests in eosreachStubTests run against the offline stubs defined in eosreachStub, these tests are the quickest way to verify the core functionality. The tests in eosreachDevTests run against the jungle testnet and confirm nodeos integration.

Vote for memtripblock

If you find this app useful, please consider voting for memtripblock as a block producer. We are committed to open sourcing all the software we develop, let’s build the future of EOS on mobile together!

TODO

  • Allow an EOS active key to be generated in SecureEnclave, this hardware backed key would ensure that private key bytes never have to enter the apps memory to perform signing.
  • Refactor Main.storyboard into small storyboards
  • The stub target should stub out the KingFisher requeests

Credits

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.