+ All Categories
Home > Documents > RentApp Technical Specifications Technical Specifications.pdf · Rentapp is a mobile dApp for iOS...

RentApp Technical Specifications Technical Specifications.pdf · Rentapp is a mobile dApp for iOS...

Date post: 03-Jun-2020
Category:
Upload: others
View: 3 times
Download: 1 times
Share this document with a friend
4
RentApp Technical Specs
Transcript
Page 1: RentApp Technical Specifications Technical Specifications.pdf · Rentapp is a mobile dApp for iOS and Android made with React Native 0.59.8. Firebase is used for: database, analytics

RentApp Technical Specs

Page 2: RentApp Technical Specifications Technical Specifications.pdf · Rentapp is a mobile dApp for iOS and Android made with React Native 0.59.8. Firebase is used for: database, analytics

Technologies

Rentapp is a mobile dApp for iOS and Android made with React Native 0.59.8. Firebase is used for: database, analytics and debug.

Blockchain technologies are done with Waves Platform’s. We use our own implementation of the node.

Libraries

Rentapp uses the following libraries from @wavesplatform for crypto : @waves/signature-adapter: 5.0.15, @waves/ts-lib-crypto: 0.0.2,

Waves’s signature-adapter is made for NodeJS and not natively compatible with React Native so we used « rn-nodeify » to adapt it.

« react-native-calendario » for the different calendars used inside the app. « react-native-router-flux » for navigation. « react-native-paypal » for PayPal payment. « react-native-gifted-chat » for the chat. « react-native-firebase » for native Firebase linking. « react-native-maps » for the different maps used throughout the app. « react-native-qrcode-svg » to display QR codes. « react-native-camera » to scan QR codes. « react-native-geocoder » for user’s coordinates. « react-native-biometrics » for biometric authentication. « react-native-popup-dialog » for the different modals.

Architecture and security

When the user signs up, we use the endpoint « utils/seed » to generate an hashed seed.

This hash is used to generate a waves public key that is saved unencrypted in the Firebase database of the user.

We don’t want to save this seed hash without encryption but we still want to give the user the ability to access it from any phone in the future, it would be risky to encrypt it with the password since it can be easily retrieved.

Like every major modern banking app (N26, Shine, …), we ask the user for a four digits PIN and use it to encrypt the hash. This way, when we’ll want to make a

Page 3: RentApp Technical Specifications Technical Specifications.pdf · Rentapp is a mobile dApp for iOS and Android made with React Native 0.59.8. Firebase is used for: database, analytics

transaction, we’ll just have to retrieve the hash from Firebase, decrypt it with the PIN and then use it to sign the transaction.

To secure this hashed seed even further, we make sure the Firebase’s DB rules are set to ensure that only authenticated users can access their own hash with a valid iOS or Android client.

We collect as few datas about the user as possible: first name, last name, phone number, public key, the hash of his seed and the unique keys of the items that he added to the platform.

A unique key is generated for every item, user and rental. A string is made of those keys and added as attachement for the payment transaction on the blockchain.

A WavesPlatform address is able to receive every major cryptocurrency so we use the endpoint « transactions/address/{userAddress} » to retrieve the balance of all the user’s wallets.

To receive coins from outside of WavesPlatform, we use Coinomat’s API (https://coinomat.com/api.php) to generate a tunnel.

Ex: we want to send BTC to a wBTC (Waves’s BTC) wallet, we send Coinomat the user’s Wave address and they send back a BTC address that will tunnel the coins to our Waves’s wallet.

The same principle is used to send coins outside of WavesPlatform.

Page 4: RentApp Technical Specifications Technical Specifications.pdf · Rentapp is a mobile dApp for iOS and Android made with React Native 0.59.8. Firebase is used for: database, analytics

Definitions

React Native: Facebook’s mobile app to make native mobile apps for iOS and Android with the same code base.

Firebase: back-end as a service for mobile apps from Google.

Seed: a 15 words chain mnemonic that is meant to be saved by the user to be able to retrieve his privates and public keys.

WavesPlatform: an open source platform to build decentralized dapps.


Recommended