Skip to content

Latest commit

 

History

History
119 lines (94 loc) · 6.27 KB

README.md

File metadata and controls

119 lines (94 loc) · 6.27 KB

FiberCrypto wallet

Build Status Contributions welcome License: GPL v3 Coverage Status

FiberCrypto wallet is a cryptocurrency software wallet aimed at:

  • Provide easy-to-use interactions to users
  • State
  • Out-of-the-box support for every SkyFiber token in a single place
  • Support other altcoins
  • Facilitate exchange of crypto assets
  • Buy and sell supported crypto assets using fiat (e.g. USD, GBP, EUR, ...)
  • Integrations with trading tools
  • Offer basic blockchain-specific tools

Development

Project folder structure

Project files are organized as follows:

  • main.go : Application entry point
  • CHANGELOG.md : Project changelog
  • Makefile : Project build rules
  • README.md : This file.
  • *.qrc : QML resource index files.
  • qtquickcontrols2.conf : QT Quick controls configuration file.
  • ./resources : Static resources.
  • ./resources/images : Graphics resources needed by the application.
  • ./resources/images/icons : Project and third-party icons
  • ./resources/fonts : Font files needed to compile the application.
  • ./src : Application source code.
  • ./src/ui : QML definitions for application GUI components.
  • ./src/ui/Dialogs : QML definitions for reusable dialogs.
  • ./src/ui/Delegates : QML specs for partial views.
  • ./src/core : Core go-lang interfaces.
  • ./src/main : Project specific source code.
  • ./src/util : Reusable code.
  • ./src/util/logging : Event logging infrastructure.
  • ./src/models : QT models linking coin-specific models to application GUI.
  • ./src/coin : Source code for altcoin integrations.
  • ./src/coin/mocks : Types implementing core interfaces for generic testing scenarios
  • ./src/coin/skycoin : Skycoin wallet integration
  • ./src/coin/skycoin/models : Skycoin implementation of golang core interfaces.
  • ./src/coin/skycoin/blockchain : Skycoin blockchain API.
  • ./src/coin/skycoin/sign : Skycoin sign API.
  • ./vendor : Project dependencies managed by dep.

Architecture

FiberCrypto wallet supports multiple altcoins. In order to cope with this complexity GUI code and QT models rely on strict interfaces which shall be implemented to add support for a given coin. Each such integration must have two main components:

  • Models API: Implements application core interfaces.
  • Sign API : Implements altcoin transaction and message signing primitives required by application code.
  • Blockchain API : Provides communication between application and altcoin service nodes to query for data via REST, JSON-RPC and other similar low-level client-server API.
  • Peer-exchange API (optional): Implements peer-to-peer interactions with altcoin blockchain nodes.

Build System

The build system is Qt framework. The front-end is programmed in QML, and the back-end in Go, using therecipe/qt.

Requirements

Windows requires the command line tool magick convert, that comes with the open-source ImageMagick project in order to build the icons (not necessary as default icons are always provided)

Qt version

Linux/X11 requirements
MacOS requirements
Windows requirements

The minimum Qt version required is Qt 5.12.0 LTS. However, is highly recommended using Qt 5.12.1 LTS or any later version of Qt5 due to some bugs:

We always recommend using the latest Qt version. See Qt Archive.

Make targets

Common actions are automated with the help of make. The following targets have been implemnented:

deps                           Add dependencies
run                            Run FiberCrypto Wallet.
install-deps-no-envs           Install therecipe/qt with -tags=no_env set
install-docker-deps            Install docker images for project compilation using docker
install-deps-Linux             Install Linux dependencies
install-deps-Darwin            Install osx dependencies
install-deps-Windows           Install Windowns dependencies
install-deps                   Install dependencies
build-docker                   Build project using docker
build-icon-Windows_NT          Build the application icon in Windows
build-icon-Darwin              Build the application icon in Darwin
build-icon-Linux               Build the application icon in Linux
build-icon                     Build the application icon (Windows_NT and Darwin systems)
build                          Build FiberCrypto Wallet
prepare-release                Change the resources in the app and prepare to release the app
clean-test                     Remove temporary test files
clean-build                    Remove temporary files
clean                          Remove temporary files
gen-mocks                      Generate mocks for interface types
test-sky                       Run Skycoin plugin test suite
test-core                      Run tests for API core and helpers
test-cover                     Show more details of test coverage
test                           Run project test suite
install-linters                Install linters
install-coveralls              Install coveralls
lint                           Run linters. Use make install-linters first.

Type make help in your console for details.

WIP

This is a Work-In-Progress.