All Projects → allemanfredi → PEGASUS

allemanfredi / PEGASUS

Licence: LGPL-3.0 license
Pegasus is a browser extension that implements a wallet for the IOTA cryptocurrency. https://allemanfredi.github.io/pegasus-website/

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to PEGASUS

Legacy Wallet Use Trinity Wallet Instead
IOTA Wallet
Stars: ✭ 2,123 (+15064.29%)
Mutual labels:  iota, iota-wallet
export-all-extensions
Export name and url of all installed extensions in Google Chrome
Stars: ✭ 68 (+385.71%)
Mutual labels:  google-chrome-extension
Chatangle
A free, decentralized, global chatroom, powered by the IOTA tangle
Stars: ✭ 16 (+14.29%)
Mutual labels:  iota
flash-demo
IOTA Flash channels demo using webRTC for communication.
Stars: ✭ 21 (+50%)
Mutual labels:  iota
SensorNode
SensorNode-client application for IOTA.
Stars: ✭ 35 (+150%)
Mutual labels:  iota
IOTA101
IOTA Developer Essentials
Stars: ✭ 38 (+171.43%)
Mutual labels:  iota
meta-iota
OpenEmbedded layer for the IOTA Distributed Ledger
Stars: ✭ 41 (+192.86%)
Mutual labels:  iota
WebCache
Chrome extension to view the cached version of the current webpage
Stars: ✭ 32 (+128.57%)
Mutual labels:  google-chrome-extension
IOTA-MAM.lib.js-PoC
Working Proof of Concept of IOTA's MAM technology using Live Nodes to push and receive messages inside tangle
Stars: ✭ 19 (+35.71%)
Mutual labels:  iota
privee
Google Chrome extension using machine learning to summarize privacy policies
Stars: ✭ 21 (+50%)
Mutual labels:  google-chrome-extension
Tanglestash
IOTA meets BitTorrent: An algorithm to persist any file onto the tangle of IOTA
Stars: ✭ 46 (+228.57%)
Mutual labels:  iota
iota-mqtt-poc
IOTA Proof of Concept, store MQTT messages on the tangle.
Stars: ✭ 40 (+185.71%)
Mutual labels:  iota
ipm
IOTA node peer manager. Useful for monitoring IOTA peers
Stars: ✭ 71 (+407.14%)
Mutual labels:  iota
iota-mnemonic
Generate, restore IOTA seed from Bitcoin BIP39 mnemonic
Stars: ✭ 16 (+14.29%)
Mutual labels:  iota
CryptoCurrency
Page to keep track of value & profits of a portfolio of cryptocurrency (based on Coinmarketcap, Bitfinex and Binance)
Stars: ✭ 27 (+92.86%)
Mutual labels:  iota
iota.php
Interact with IOTA through PHP
Stars: ✭ 45 (+221.43%)
Mutual labels:  iota
easy-web-reference-chrome-extension
You can point specific points on any web page on the internet. The reference link was created will directly copy your clipboard. Thus you can share easily the ref link!
Stars: ✭ 22 (+57.14%)
Mutual labels:  google-chrome-extension
codeforces-timer
A Google Chrome extension which adds a timer to practice timed problem solving on codeforces
Stars: ✭ 20 (+42.86%)
Mutual labels:  google-chrome-extension
giotan
The CLI Tool for IOTA in Go
Stars: ✭ 30 (+114.29%)
Mutual labels:  iota
dcurl
Hardware-accelerated Multi-threaded IOTA PoW, drop-in replacement for ccurl
Stars: ✭ 39 (+178.57%)
Mutual labels:  iota

PEGASUS

Pegasus is a chrome extension that implements a wallet for the IOTA cryptocurrency. In addition, Pegasus injects the iotajs library allowing developers to interact with IOTA Tangle without paying attention on how to keep the seed safe.

Since Pegasus is still work in progress, there could be breaking changes!

 


 

Installing

git clone https://github.com/allemanfredi/PEGASUS.git
cd PEGASUS
yarn run init
yarn build

 


  After having built the application, it needs to be loaded on chrome.

How to install Chrome extensions manually

  • Go to chrome://extensions/ and check the box for Developer mode in the top right.
  • Click the Load unpacked extension button and select the build folder for your extension to install it.

 


 

🌱 How the seed is stored?

The seed is saved in the local storage of the browser, encrypted (through argon2id + AES256-GCM) with the login password that a user chooses during the wallet initialization phase. To make it more difficult to find out, the password must meet the following requirements:

  • Must contains at least 8 characters
  • Must contains at least 1 uppercase character
  • Must contains at least 1 lowercase character
  • Must contains at least 1 symbol
  • Must contains at least 1 digit

Of this password only its hash is saved in the local storage.

During the login phase, a user will have to enter a password, which will be compared with the hash (generated with argon2id) specified above. if the two hashes match (the password is correct), the wallet loads the seed from the local storage (encrypted with argon2id + AES256-GCM), decrypts it with the password just inserted and keeps it in memory together with the plain text of the password. If the wallet shows a period of inactivity of at least 60 minutes (modifiable), it will delete the value of the variables relating to seed and password. It is also possible to disable this feature from the settings page. In this way, the seed decryption key is not saved anywhere except in the mind of the user or in the RAM for only a limited period of time.

A user also has the ability to export the seed, in order to do so, first he will have to enter the login password which will always be compared with the hash (of the password) saved in the local storage. In this way, if a user loses the access password (or if he forgets it), if he has exported the seed he will be able to restore the wallet

 


 

⚙️ Architecture

 


 

💉 iota-js injection

if (window.iota) {

    window.iota.on('providerChanged', provider => ...)
    window.iota.on('accountChanged', account => ...)

    // if you want to create a connection directly
    const isConnected = await window.iota.connect()
    
    const trytes = await window.iota.core.prepareTransfers(transfers)
    const bundle = await window.iota.core.sendTrytes(trytes, depth, minWeightMagnitude)

    // or
    const bundle = await window.iota.transfer(transfers)
}

 


 

🔨 Work In Progress

  • pegasus-ledger-trampoline: Since it is not possible to access Ledger Nano S from a Google Chrome extension, i implemented a workaround: injecting an iframe to the background page of the extension, (which is hosted thanks to gh-pages here). In order to work correctly, the iframe must run under https (since U2F requires SSL). [30%]

 


 

📃 Articles

 


 

🚀 Collaboration

Code contributions are welcome!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].