|
|
|
# FUCoin Manual
|
|
|
|
This page contains general information on how to run the FUCoin software, possible configuration options and the general application architecture.
|
|
|
|
|
|
|
|
## Table of Contents
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## Getting started
|
|
|
|
|
|
|
|
In case you haven't already installed the project or if you didn't manage to run it, you can follow the instructions in the projects [README](https://git.imp.fu-berlin.de/DistributedSystems4Students/FUCoin/blob/master/README.md). For developing, you may want to import the FUCoin project as an "Existing Maven Project" into your IDE which should then take care of the rest. When launching the program from the IDE, the main class for the local system (with the supervisor) is `src/main/java/fucoin/Main.java` and the remote main class is `src/main/java/fucoin/MainRemote.java`.
|
|
|
|
|
|
|
|
## Configuration Options
|
|
|
|
|
|
|
|
The former main class contains a few configuration options. These are currently implemented as static fields of the `Main` class. However, depending on the status of issue #3, this may change in the future.
|
|
|
|
For now, the following configuration options exist:
|
|
|
|
|
|
|
|
* `numberOfWallets` (Default value: `2`): Number of (local) wallets which should be created during the initialisation
|
|
|
|
* `createGUI` (Default value: `true`): If set to `true`, wallets will be created with a GUI.
|
|
|
|
|
|
|
|
After changing a configuration value, the application has to be recompiled for the changes to take effect.
|
|
|
|
|
|
|
|
## Remoting
|
|
|
|
|
|
|
|
Besides creating local wallets (i.e. wallets running in the same JVM as the supervisor), it is also possible to create a remote wallet in a different JVM (on the same computer or on a different computer in the same network). When starting a remote wallet, you will be prompted to enter the address of a __wallet__ which is already part of the network. This wallet will then be used as the preknown neighbour for the remote wallet.
|
|
|
|
|
|
|
|
*__Attention when using eduroam:__ The eduroam network does not allow communication between its network clients! If you want to test the remoting part over a network you will have to use your home network or create an ad-hoc network.*
|
|
|
|
|
|
|
|
## Joining
|
|
|
|
The following section describes the process of a new wallet (no matter if local or remote):
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
|
1. The new wallet sends a `ActionJoin` to its preknownNeighbour
|
|
|
|
2. The neighbour answers with an `ActionJoinAnswer` containing a list of its own neighbours and a reference to the supervisor
|
|
|
|
3. Once the new wallet learns about the supervisor, it sends a `ServerActionJoin` to the supervisor.
|
|
|
|
4. The supervisor answers with another `ActionJoinAnswer`, again with all its neighbours (which are all wallets in the network).
|
|
|
|
5. The supervisor also sends a message to to initiate the transfer of the start amount to the new wallet (this is carried out as a distributed commit, see next section for details)
|
|
|
|
|
|
|
|
## Distributed Commit
|
|
|
|
|
|
|
|
[TODO]
|
|
|
|
|
|
|
|
## Known issues and open problems
|
|
|
|
|
|
|
|
All open problems and issues are managed in the [issues view of this project](https://git.imp.fu-berlin.de/DistributedSystems4Students/FUCoin/issues). Please create a new issue when you encounter a problem or if you have a proposal. Once you decide to work on an issue, please assign yourself and work in a branch. When you are finished, create a merge request. On our last meeting we agreed to work with a dual control (*Vier-Augen-Prinzip*) when merging merge requests. This means that you have to wait till someone else has a look at the changes you made and merges your request or gives you feedback. |
|
|
\ No newline at end of file |