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
- online: https://blockchain.unica.it/balzac/docs
- repository: https://github.com/balzac-lang/balzac-doc
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
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
mvn -f xyz.balzaclang.balzac.parent/ -U clean install
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 (saved into
xyz.balzaclang.balzac.web/target/
) inside any web container (e.g. Tomcat) - build on your machine and run in Docker (see
docker/Dockerfile-slim
to create the image) - build and run in Docker (see
docker/Dockerfile-build
to create the image) - download from DockerHub and run in Docker
mvn -f xyz.balzaclang.balzac.web/ jetty:run
docker build -f docker/Dockerfile-slim -t balzac:latest .
docker run -p 8080:8080 balzac:latest
docker build -f docker/Dockerfile-build -t balzac:latest .
docker run -p 8080:8080 balzac:latest
DockerHub: balzaclang/balzac
docker pull balzaclang/balzac:latest
docker run -p 8080:8080 balzaclang/balzac:latest
The project is currently developed using Eclipse IDE for Java and DSL Developers (generally the latest version). Install it using the Eclipse installer.
Dependencies
- Xsemantics 1.19 (update site)
- Jacoco (optional) (see http://www.eclemma.org/installation.html)