Building the DCSpark Client

Our DCSpark XMPP client is both a robust Jabber chat client (based on Spark 2.7.1) and a secure p2p wallet client. The wallet client is implemented as a Spark plugin. Other plugins provide OTR (off-the-record) for end-to-end chat encryption, real time language translation, and a host of other features.

In order to build DCSpark, you will need to obtain our master source ZIP archive, along with some prerequisite tools, which may vary depending upon your target platform. You can build on Linux, Mac, or Windows. (You can also build the Windows version on Linux.) Our source ZIP includes all of Spark, plus our modifications to it, plus source for our wallet plugin and the demo ABC game, provided as a sample Marketplace app. Start with the general Prerequisites section, and then follow the steps listed for your build platform.

Prerequisites, and Source

You can obtain the complete source package for DCSpark via this link. This file includes all original Spark source code (based on Spark-master.zip extracted from GitHub on 25 June, 2015), together with all of our customizations and bugfixes to Spark, plus our original plugins. In general, where we have modified a Spark source file, the original has been left as a file of the same name with the suffix _org. This should make it simple to see what we have changed. See Checksums and Signatures below for the data needed to authenticate our source ZIP.
You will need a JDK in order to compile the Java source files, since a standard JVM does not contain the compiler. You will need at least Java 7, or Java 8. Java 7u79 or better is recommended. On Linux systems, to obtain the latest JDK version of Java, you can do one of these things:
  1. Obtain the latest openjdk-7-jdk package from your Linux distribution, by using apt-get or equivalent.
  2. Visit the OpenJDK Project Site.
  3. Visit Oracle.
For Windows and Mac systems, obtain the latest JDK version of Java from Oracle.
The build tool used is Ant, from Apache. On Linux, you can find this in your Linux distribution by using apt-get ant or equivalent. For all other platforms, you can obtain a binary (or source) distribution of this tool from the Apache Ant Project.
An installer package allows you to deploy your DCSpark build onto other computers. It is not necessary to build an installer package in order to run your build on the same computer that you used to build DCSpark.

On the Mac, there are no additional tools required.

On Windows or Linux systems, you will also need these:
  1. Launch4j - For convenience, we have provided version 3.8 of this utility in our source ZIP, in build/lib/launch4j.jar. You may copy this file to /opt/launch4j/ and use it from there if you wish. You may also build the JAR yourself by obtaining the project source here.
  2. IzPack - You can obtain this package directly from the vendor here. Because the new 5.0 version exhibited serious problems when we tried it, we recommend sticking with legacy version 4.3.5. Just in case that version goes away upstream, you can also obtain it from us here.
  3. Python - Because part of the IzPack tool is written in Python, you will need a Python runtime in order to use it. On Linux, you can obtain Python from your Linux distribution, using apt-get python or equivalent. On Windows, you can obtain the Python runtime from Python.org.

Building on Linux (64-bit)

To build DCSpark and the base set of plugins, execute the following commands:
# unzip DCSpark-master.zip
# cd DCSpark-master/build
# ant jar
# ant build.plugins
To run DCSpark, you can use the startup script: ./DCSpark-master/target/build/bin/startup.sh

The first time you run the client, it will create $HOME/.digitalcash if it does not exist, and copy all the plugins, preference and config files into it.

If you would like an icon on your desktop, build the installer and run the digitalcash-installer.jar file.
You can build additional plugins, or rebuild individual ones, simply by doing the following:
# cd DCSpark-master/src/plugins/<plugin-name>/build
# ant jar
Optionally, to deploy the plugin to your build:
# ant copy

Our p2p wallet plugin is found in src/plugins/silentvault.
Note that some plugins might not build on your system. (And some non-default plugins appear not to build at all.)
On Linux, you can build installers for Linux, for Windows, and even .exe installers for WinXP. To do this, you will need to ensure that you have the install4j and IzPack utilities installed in /opt, or wherever you placed them. Edit the file DCSpark-master/build/build.xml and look for the properties named installer.izpack.dir and launch4j.dir. The values for these (which are directory names) must match where the utilities are installed. Then you can simply run the following:
# cd DCSpark-master/build
# ant installer.izpack.exe

This will create the files digitalcash-installer.jar and digitalcash-installer.exe in the DCSpark-master/installer directory. You can only run the .exe file on a WinXP system, but on all other Windows and Linux systems, you can run java -jar digitalcash-installer.jar to install your build on another computer. (Note that on Windows you may need to run this command as Administrator.)

Building on Microsoft Windows

To build DCSpark and the base set of plugins, execute the following commands:
> unzip DCSpark-master.zip
> cd DCSpark-master/build
> ant jar
> ant windows.build.plugins
To run DCSpark, you can use the startup script: DCSpark-master/target/build/bin/startup.bat

The first time you run the client, it will create $USERHOME/AppData/Roaming/DigitalCash if it does not exist, and copy all the plugins, preference and config files into it.

If you would like an icon on your desktop, build the installer and run the digitalcash-installer.jar file (or the digitalcash-installer.exe file for WinXP). Note that you may need to do this as Administrator.
You can build additional plugins, or rebuild individual ones, simply by doing the following:
> cd DCSpark-master/src/plugins/<plugin-name>/build
> ant jar
Optionally, to deploy the plugin to your build:
> ant copy

Our p2p wallet plugin is found in src/plugins/silentvault.
Note that some plugins might not build on your system. (And some non-default plugins appear not to build at all.)
On Windows, you can build installers for for Windows, Linux, and also .exe installers for WinXP. To do this, you will need to ensure that you have the install4j and IzPack utilities installed. Wherever you placed them, edit the file DCSpark-master/build/build.xml and look for the properties named installer.izpack.dir and launch4j.dir. The values for these (which are directory names) must match the locations where the utilities are installed. Then you can simply run the following:
> cd DCSpark-master/build
> ant installer.izpack.exe

This will create the files digitalcash-installer.jar and digitalcash-installer.exe in the DCSpark-master/installer directory. You can only run the .exe file on a WinXP system, but on all other Windows and Linux systems, you can run java -jar digitalcash-installer.jar to install your build on another computer. (Note that on Windows you may need to run this command as Administrator.)

Building on Mac (64-bit)

To build DCSpark and the base set of plugins, execute the following commands:
# unzip DCSpark-master.zip
# cd DCSpark-master/build
# ant jar
# ant mac.build.plugin
To run DCSpark, you can use the startup script: ./DCSpark-master/target/build/bin/startup.sh

The first time you run the client, it will create Library/Application Support/DigitalCash if it does not exist, and copy all the plugins, preference and config files into it. You may see some errors related to a library (libgrowl.jnilib) which isn't found because it hasn't been copied yet. This error will disappear on subsequent invocations.

If you would like an icon on your dock, build the installer and run the digitalcash_2_7_1_<build date>.dmg file.
You can build additional plugins, or rebuild individual ones, simply by doing the following:
# cd DCSpark-master/src/plugins/<plugin-name>/build
# ant jar
Optionally, to deploy the plugin to your build:
# ant copy

Our p2p wallet plugin is found in src/plugins/silentvault.
Note that some plugins might not build on your system. (And some non-default plugins appear not to build at all.)
On the Mac, this is very simple and does not require any additional tools. Merely give these commands:
# cd DCSpark-master/build
# ant installer.mac

This will create a .dmg file in ../target/installer. You can simply double-click this filename in the Finder to mount the volume and install from it. Note that this installer contains the same Java runtime that was installed on the machine which built it, so you will not need to install a JVM on target machines.

Checksums and Signatures

The SHA-1 checksum of our master source ZIP is:

d5af74df2c1ff998973ff77e42340bf4779c3981  DCSpark-master.zip

The SHA-256 checksum of our master source ZIP is:

8e86b355e77bc7e1819a3fa14e6adac115f0cd3ca3ec7543ede8f82d3b3cd8a6  DCSpark-master.zip

The following signature files corresponds to the source archive file (without the .asc):
DCSpark-master.zip.asc
Download this signature file, and use the Signature Key below to verify it.
The GPG command is:

gpg --verify DCSpark-master.zip.asc DCSpark-master.zip

You should see output like this:

gpg: Signature made Sat 26 Sep 2015 04:03:29 AM UTC using RSA key ID 3192D170
gpg: Good signature from "Silent-Vault Devs (also signing key) <devs@silentvault.com>"

The archive signatures were created using the following key:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)

mQINBFLXUpMBEADmPDvG/Iys5vvkg40YJy1srkNLWW4/cm4xZkgnybledQlmZ7yX
aV9hiTs/+4U1cG7FBPH4l4pmTGcaefOy3EcUN8P3IuvJvXLpS/1RhGnONpuPseH4
jWoGxreMTHq+5MUVzl8sCjHcF63i4G+aZIVGyjitdBGywS4ElwYfmiZtxT5m9PtS
CUmbRzJINQt/kEXAD9dacQlDmrpu+HlDogR91vKf3NPzMyBvIrFOxwyy4/xtoDUc
tMwGg/3kb4rS/aNmvL8koJQqHSELTOKymOwLy2KEznM21j+6SQoP/wmYj03KD+WX
dWdxBxEDgWMqR7w9Fa1y4lm1L65ZDxJojHPHj2mL8xNPU9TwHczVyaQjvGJlyVYv
QiL2xIH+CxbxiaAEYQEzCk+RJgstkshBWSFwWND/tEwnAPA26c98C9WoSt0CDbEt
2/OGKGrs8hxJlRDusZ652inkXA68d4KzhiQAMzkHz6mFufM6K39s7DaNSY0UiNS2
JlOw4W5zNtfkVDE/ic3xpI0LLaBAMMi4XOTDrzdhh2KUE+TONAnDutuFNoX4hK0N
pMCU45FXxyyf3XIEAHKLUPOructqrQwJfXix7KIHsx+/v2gddKeAus5YUw0OcbVN
5YBxMA86H3a0r7FfI6nyxxreB3gJh9wmEWAJU20JhOReLIS13Ko8otj79wARAQAB
tDtTaWxlbnQtVmF1bHQgRGV2cyAoYWxzbyBzaWduaW5nIGtleSkgPGRldnNAc2ls
ZW50dmF1bHQuY29tPokCOAQTAQIAIgUCUtdSkwIbAwYLCQgHAwIGFQgCCQoLBBYC
AwECHgECF4AACgkQ7e72pjGS0XCCCg/9ExUzcbWZu2DGmoMiqCuf9slMcQ16GZQi
ZkG1a99cG7SKxSqg2sdF+nYkAZm4s5Ti6BSMfKY+zAeBipDeqWEWgbd1eO/bsDVA
oIWmkNAlBFK2T1ligvtRkat1K34XMT6ettcrPvbeMIm5SzYzjMlmveFRFIl89KXx
wcObP4rKR9YNs3W4ipl8txRwPYyxMF9hXAhIxkV94jLGrsknFO8UySHxTCOKjdl4
5/hlcSAmAyotS8WeK2M8wC5Ic+oxrF8I8vfcfCfgU/cwO8jVBURdp3WdO8hiL1va
TaEs6tsFukoGjCGd50LRhoEmnAEHMu1HYj1YugcYz8NiUndrga/t4EZ5+ufLu8L8
S2hBic+Yy7KFDMivp0w9130i2wZAxZBx7iQMcUyktg8SDxu4RLtbNKCN6BdvPYdz
Ocrj5DnggtwZohuHYe57AUppoMp6Bo7MKHAz9QU8hoiiw/f1/WiFfL8GPe3M6R8k
CpjNtwMFKPtkSA/ObctQ/iN1dSJ53pYKOD+7nffUg3CU6Cqvry8dgnqtakqq2//T
6XdxzEeB3foQWgz37gwRk50lLbvqT/DZnK77XIKQHwaO2rKTZjSi10Q8r5QYE1nr
U0+054/CJzP2YMPSRSJP+HLJvdreZLCTzdbuFgXnBKwF12APv7TS7EiTqnUHsjRC
SPxK/sojpu25Ag0EUtdSkwEQAKkVQiDMlQsshf1mRwiPFIcLe2prPhoMkdEPV6MK
qXSc4DyCat6R+np4RpNrzupSb/nbLWi0q8sOtAV1OD7PyqQAaG6uEiUzaoPpHDIE
hTVsqb41HpP/nA6BgOYSvKsj/cJRc6PLhQBIbb+N3Nt60w7wgtaKJtEmYc6HpzH5
TV49hJVSH2fMt6Gc5O1CmXD0zD5qsJ0x8lUPoVRU3u8WRSwQhZFxmXc+coqR8xbP
sNQwdkdfrZMf9d2O71PG0hi4wQTOFFBbxPHEGjyZbH6qwQRXlmH/NaH4xRuC7K9r
AIb6wH5RK69Ylbo//Vh5NVO53Q3lXUo1fjztf9UZ1sBxh/Jt7Ngg9yCM0Uj4iZuM
iYRzEsJUB70j0i6SOoAKy5JOVt6/jafoJgh5vERT7/skz6+AXJTEt7Q5eacz7SRU
8xfr4dFZbvwelG+RajYdWFdvm3CdPe24Z5Ji2f6Qnk70l9Mr08RYwSDnPAvrmMuD
0qv9WSjCpZmD8Kd03cNdeAwsbQCZKCg3UN/HonkW05FgT8Hf/gFrdI7RKbaNMxAf
U5qxv9p5bwy2dzpF1W9EphzPkXJ1vKttMtPyREbQWh2F6vJcwXepge1zaYCUa30/
h49UZ1BeK3LRxatG9QC+IV6O+Wmlsu6qYmKPr9BjorlQmYs+RyCbQw0ZHJu14Kge
lGrLABEBAAGJAh8EGAECAAkFAlLXUpMCGwwACgkQ7e72pjGS0XD9Qg/9Ek+q45SO
ehUtQX6s0sFCq/f9k66aOzUTFTL2AxCimLtQCeR9UL/R882sWyZ8iqehqxDtODnm
k5qM0bY+leUErAY137y3aC2Q0fF+XA2HA5pUA0obGcLkobH9DUOrxYZKgApkqLkt
r5wBt5QW8qZDfHSaK4CTU7hsblNovCsGbj1jcBlmbI0D4Tekh8Ag3YZXXEyDbYno
g8wwHulQHWlpriC8jgtF08Li/Va2d0k2XyhLagcmLksh7FYvZCi1ufT+YJfikrVO
omjZ+Rs+IRuoD3idIcJXDlqnxMG5T9lIEUEmGAGA0oYacH7DX4kdIu3tJxwIhc47
WhLKXX0YKX8UKeOlUgbypZeJ14Kxvjj/5Ik7nNewe2EnJj1EKkcIq7SZ0N78yCBK
5Aedx2WsZhVOZToeW+n0+cSIFEh4I0TEXuMbEwWxTOGxLGOws8z3pzFSyr0Y4idN
V8RbTWT806CpoCtsavWc0UNqeEx+905MQmF311Ir7Q70025ipRzvO13bvt9OfIJa
FBI5aqWotXbo//62QTQAlRWyqioilA5OQ+duInAZZBG9XUi84sFh1tsiHLHrqDq9
roIldVbMllSG+wUa+QPDcBADGE35SKmQ7wg/WBgpGq92DzzpkTwke7Uhf33l2G/W
ChsD55pomVQ/YBN07w+pSFwgwQq2ZrML2dY=
=iCp2
-----END PGP PUBLIC KEY BLOCK-----
Paste the above key into a file and use gpg --import [filename].