Skip to content
master
Switch branches/tags
Code

Build Status Coverage Status Donate with Bitcoin

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

export MAVEN_OPTS="--add-opens java.base/java.lang=ALL-UNNAMED"
mvn -f xyz.balzaclang.balzac.parent/ -U clean install

Run Balzac

In order to run Balzac locally you can

  • build on your machine and run using Maven + Jetty
  • build on your machine and load the WAR package inside any servlet container (e.g. Tomcat)
  • build on your machine and run in Docker (see docker/Dockerfile-slim to create the image)
  • download from DockerHub and run in Docker

Build a WAR package

mvn -f xyz.balzaclang.balzac.web/ package

The WAR package is saved in xyz.balzaclang.balzac.web/target/.

Run with Maven + Jetty

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

Or alternatively

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

Build with Maven, run with Docker

Assuming the WAR package is saved in xyz.balzaclang.balzac.web/target/, you can generate the Docker image executing:

docker build -f docker/Dockerfile-slim -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

Donate

Donate with Bitcoin

About

Balzac is a domain-specific language to write Bitcoin transactions.

Resources

License

Packages

No packages published