Byzantine Askemos Language Layer

README :: pdf :: context view

inbound links:

(C) 2000-1010 Jörg F. Wittenberger


Byzantine Askemos Language Layer.

Ball is the first implementation of the Askemos Distributed Virtual Machine. It provides an autonomous virtual execution environment for applications, which are executed like contracts: Running processes proceed only in multilateral consensus (byzantine agreement of replicas) among a quorums of equal peers. Processes are persistent; they can communicate by passing messages to each other. Human users appear therein as processes which emit arbitrary messages at the persons discretion.





  1. Any one of the supported compilers:

    • rscheme version or above. (Recommended: install from with minor modifications).
    • Chicken Scheme – as of Jun 2013 at least the latest development version. However that's untested. You might still need to get our modifications while they make it through Chicken's community process.
  2. gcrypt (debian package libgcrypt11-dev) – optional GPL'ed alternative to openssl; at the moment openssl is still required nevertheless as a command line tool, but not as a library to be linked)
  3. openssl. (Used to be semioptional; Askemos/BALL works with degraded security for humans who are not allowed, to use cryptography and signatures. However the current build depends on it. Will become optional again.)
  4. A the version 3.7.8 of the SQLite library is currently included vebatim in the source – we had too many problems with versions being compatible at the file level, but not at the checksum level of the file content as required by BALL.
  5. The pcre library with utf-8 support enabled.
  6. libmagic1
  7. A ntp server (nodes need resonable synchronized time).
  8. on FreeBSD cups-base package (for /usr/local/etc/cups/mime.types)


  1. libupskirt for markdown parsing
  2. htmldoc
  3. zip/unzip
  4. A WebDAV client like fusedav; but be sure to use our fixed version.
  5. (really) optional: Jeff Kingston's Lout as formatting engine

With source tweaking still supported as data source


  1. reiserfs on servers!

Install Procedure

1 Install <a href="/A849640f672ed0df0958abc0712110f3c/RScheme">RScheme</a> or <a href="/A26b5619be8d5e3348cca356acfc8efea/TPFSchemeChicken">Chicken Scheme</a>

1 Install RScheme or Chicken Scheme

See RSchemeInstall.

The Chicken systems needs the "high load scheduler" for reasonable performance. (How to install that one is not yet covered here.)

2 Compile and Install the Askemos Binary

The askemos-version.tar.gz contains a directory askemos-version. Unpack and within the resulting directory askemos-version:

make askemos

Do a

# make install

as super user or use the package manager of you system to install the binary runtime files.

3 Create Local Repository

To set up using default protection (simple acl) do:

$ make repository HOSTNAME=host.domain.tld

(If the HOSTNAME= assignment is omitted, it defaults to the output of hostname, which is not always what you want.)

Otherwise for general protection do:

$ make repository WAKEUP=/home/jerry/doc/zettel/wakeup.scm CONFIGURATION=secured.scm


After initializing a local repository it can be started by

$ make start HOSTNAME=host.domain.tld

Point your web browser to localhost:port (port defaults to 7081); login as user "gonzo" password "oznog".


The source code of BALL is available under the Gnu Public License.

Last modification: Thu, 23 Dec 2010 16:42:49 +0100

Author(s): jfw,

Document number A26b5619be8d5e3348cca356acfc8efea delivered to public at Sun, 15 Jul 2018 22:05:04 +0100

short comments

add comment