A clojure implementation of a blockchain based on Learn Blockchains by Building One
You will need Leiningen 2.0.0 or above installed.
To get the dependencies, run:
lein deps
To start a server for the application, run:
lein ring server
- Requesting the whole Blockchain:
$ curl -X GET 127.0.0.1:8090/chain
- Mining coins:
$ curl -X GET 127.0.0.1:8090/mine
- Make a new transaction:
$ curl -X POST -H "Content-Type: application/json" -d '{
"sender": "d4ee26eee15148ee92c6cd394edd974e",
"recipient": "someone-other-address",
"amount": 5
}' "http://127.0.0.1:8090/transactions/new"
- Register a new node:
$ curl -X POST -H "Content-Type: application/json" -d '{
"node": "http://127.0.0.1:8091"
}' "http://127.0.0.1:8090/nodes/register"
- Resolving Blockchain differences in each node:
$ curl -X GET 127.0.0.1:8090/nodes/resolve
lain test
- Create a self contained version of application with:
lein ring uberjar
; - Run
docker build -t paoloo/blockchain .
to create image; - And finally, run
docker run -p 8090:8090 paoloo/blockchain
to instantiate it.
MIT
Copyright (c) 2017 Paolo Oliveira