Haskell implementation of RSCoin
Switch branches/tags
Nothing to show
Clone or download
Latest commit 109d8f6 Mar 23, 2017
Permalink
Failed to load latest commit information.
admin Add more patterns to admin/cleanDB Aug 26, 2016
bench [RSC-233] Remove Mintette.Worker Sep 20, 2016
block-explorer [RSC-280] Use base64 input in search Mar 10, 2017
resources [RSC-134] Add gtk to rscoin-user Aug 22, 2016
rscoin-core @ 5b3fde8 Bump core Mar 21, 2017
src Fix Mar 21, 2017
test [RSC-261] Swap modifyLoggerName and fork Sep 27, 2016
.gitignore Add benchmarks.txt to .gitignore Mar 19, 2017
.gitlab-ci.yml Update CI config to run tests properly Jul 12, 2016
.gitmodules Move rscoin-core to https, bump it Sep 1, 2016
Dockerfile add dockerfile May 3, 2016
LICENSE init project Mar 21, 2016
README.md Update readme with frontend and gui build options Aug 22, 2016
Setup.hs Remove unused file. Bump rscoin-core Sep 1, 2016
default.nix [RSC-134] Add gtk to rscoin-user Aug 22, 2016
deploy-rscoin.cfg Add notary.publicKey into default deploy-rscoin.cfg Sep 12, 2016
local.yaml [RSC-235] Add createTemp option to rscoin-deploy Sep 19, 2016
remote-multi.yaml Update default remote configs Jun 21, 2016
remote-single.yaml Update default remote configs Jun 21, 2016
remote.yaml Add remote config to run users on separate machines Jun 17, 2016
rscoin.cabal Introduce wss:// option to block explorer backend Oct 14, 2016
shell.nix Make it compile w/ nix Mar 23, 2017
stack.yaml Bump rscoin-core, disable nix:false flag in stack Nov 16, 2016
test.yaml [RSC-205] Rename testing configuration file Sep 8, 2016
testBankKey Add test bank keys Aug 22, 2016
testBankKey.pub Add test bank keys Aug 22, 2016
testNotaryKey Add default notary keys Sep 12, 2016
testNotaryKey.pub Add default notary keys Sep 12, 2016

README.md

RSCoin: A scalable distributed cryptographic currency framework

RSCoin proposes¹ a framework to implement centrally banked monetary systems based on cryptographic methods in such way that it is possible for a system which uses RSCoin framework to meet every of the following criteria:

  1. System can handle massive amount of users and scales well;
  2. Transaction times are comparable to those of MasterCard and other payment systems that issue plastic cards;
  3. The system is auditable and transparent for all the users;
  4. The system allows rapid payments in which instruments are sent between two or more commercial banks or other payment systems, which don't have a partnership agreement. It is so because compliance is ensured by protocol and no direct communication between the systems of those banks or payment systems is required.
  5. For central banks and other possible governors of monetary supply, RSCoin provides a way to focus on this, off-loading transaction handling to commercial banks and other governed entities
  6. With a simple extension, RSCoin provides a way to perform extremely fast international transactions with no need for manual work and correspondent banks;.

This repository

This repository is the first full implementation of RSCoin framework, as well as its application in form of working deployable system. In this implementation authors tried to follow paper by Dr. Danezis and Dr. Meiklejohn as close as possible.

Platform support

At the moment, the only supported platform is Linux. Mac OS X isn't officially supported, but it should be possible to deploy and run RSCoin on Mac OS X the same way as it is done on Linux.

Windows will be supported at some point, but for now we don't have a milestone for that.

Installation

At the moment, RSCoin has binary distribution served from our servers through Nix² package manager³. To perform automatic installation, please run the script which you can find in this repository under admin/install.sh.

To build from source, clone this repository, navigate to the directory into which the project was cloned and run stack build there.

To build with web frontend support run stack build --flag rscoin:befrontend. To build with gui support run stack build --flag rscoin:gtkgui.

Running

To understand how to run central bank, mintettes and user nodes, please refer to admin/demo script. It is the simplest script which runs just two mintettes, central bank and allows you to perform transactions in bank-mode. In order to get a more sophisticated layout with more than one user and nine mintettes, please refer to script admin/demo9.

We also have testing and benchmarking.

# Full tests, run 3 times
stack test rscoin --test-arguments '--match "Test.RSCoin.Full" -a 3'
# All other tests
stack test rscoin --test-arguments '--skip "Test.RSCoin.Full"'
# And that's how to run bench:
stack bench rscoin:rscoin-bench-local --benchmark-arguments "--users 2 --mintettes 1"

References

¹ — G. Danezis and S. Meiklejohn, “Centrally Banked Cryptocurrencies

² — E. Dolstra et al, “Nix: A Safe and Policy-Free System for Software Deployment

³ — NixOS Foundation, Nix Package Manager