Build Status Coverage Status

Balzac

A domain-specific language to write Bitcoin transactions, based on the paper A formal model of Bitcoin transactions presented at Financial Cryptography and Data Security 2018.

Online editor:

Documentation

Setup

Execute the script install-deps.sh or alternatively follow these steps:

Install a customized version of BitcoindConnector4J

echo "Cloning https://github.com/natzei/BitcoindConnector4J.git"
git -C $HOME clone https://github.com/natzei/BitcoindConnector4J.git
git -C $HOME/BitcoindConnector4J checkout release-0.16
gradle -p $HOME/BitcoindConnector4J install

Compare versions

Install a customized version of BitcoinJ

echo "Cloning https://github.com/natzei/bitcoinj.git"
git -C $HOME clone https://github.com/natzei/bitcoinj.git
git -C $HOME/bitcoinj checkout lib
gradle -p $HOME/bitcoinj install -x test

Compare versions

Install

mvn -f xyz.balzaclang.balzac.parent/ -U clean install

Run Balzac

In order to run Balzac locally you can

Maven + Jetty

mvn -f xyz.balzaclang.balzac.web/ jetty:run

Build with Maven, run with Docker

docker build -f docker/Dockerfile-slim -t balzac:latest .
docker run -p 8080:8080 balzac:latest

Build and run with Docker

docker build -f docker/Dockerfile-build -t balzac:latest .
docker run -p 8080:8080 balzac:latest

Prebuilt image

DockerHub: balzaclang/balzac

docker pull balzaclang/balzac:latest
docker run -p 8080:8080 balzaclang/balzac:latest

Development

The project is currently developed using Eclipse IDE for Java and DSL Developers (generally the latest version). Install it using the Eclipse installer.

Dependencies