You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+19-4Lines changed: 19 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,7 +1,9 @@
1
-
# Blockchain Access Layer
1
+
# Blockchain Access Layer (BAL)
2
+
2
3
The project is a Java 8 web application that uses Jersey to expose a RESTful API.
3
4
4
5
## Configuration
6
+
5
7
The blockchain access layer needs to be able to communicate with a [geth node](https://github.com/ethereum/go-ethereum)
6
8
which has RPC connections enabled.
7
9
Furthermore, the layer directly accesses the keystore file holding the private key of an Ethereum account used for sending
@@ -14,6 +16,7 @@ The configuration file that can be used to configure these aspects (communicatio
14
16
15
17
16
18
## Building and Deployment
19
+
17
20
After cloning, you can build the project and package it into a WAR
18
21
file using the following command:
19
22
```
@@ -28,6 +31,7 @@ of the Bitcoin Core node. However, the used library is not available in a public
28
31
a local Maven repository which includes the required binaries. This repository is found [here](local-maven-repo).
29
32
30
33
## Accessing the API
34
+
31
35
The application exposes an asynchronous RESTful API to subscribe and unsubscribe from the provided operations.
32
36
33
37
**To summarize:**
@@ -59,6 +63,7 @@ paths to manually delete the corresponding subscription:
59
63
```
60
64
61
65
## Running a Local geth Node
66
+
62
67
A geth node is used to access the Ethereum network. For development purposes, it is advised
63
68
not to connect to the main Ethereum network, but rather to one of the testnets.
64
69
(another, more difficult option would be to run a local private Ethereum network).
@@ -84,6 +89,7 @@ To start a geth node in the fast-sync mode, execute the following command:
84
89
please replace _localhost_ with the ip address of the computer running the node.
85
90
86
91
## Running a Local Bitcoin Core Node
92
+
87
93
A Bitcoin Core node (or _bitcoind_ node) is used to access the Bitcoin network. For development purposes, it is advised
88
94
not to connect to the main Bitcoin network, but rather to one of the testnets.
89
95
(another, more difficult option would be to run a local private Bitcoin network).
@@ -103,10 +109,13 @@ connection, and the availability of peers).
103
109
```
104
110
bitcoin-cli -getinfo -rpcconnect=<ip address of the node> -rpcport=<port of the node> -rpcuser=<rpc username> -rpcpassword=<rpc password>
105
111
```
112
+
106
113
## Setting-up a Hyperledger Fabric Network
114
+
107
115
Please follow these steps [Fabric Setup](https://hyperledger-fabric.readthedocs.io/en/latest/getting_started.html)
108
116
109
117
### Note
118
+
110
119
The included Fabric unit test depends on the [FabCar official example](https://hyperledger-fabric.readthedocs.io/en/release-1.4/write_first_app.html), so in order to run it
111
120
ensure the following:
112
121
@@ -122,6 +131,7 @@ ensure the following:
122
131
This ensures that the SDK is able to find the orderer and network peers.
123
132
124
133
## Case Study (For BlockME)
134
+
125
135
The case study invloves a cryptocurrency exchange service utilitzing the blockchain access layer.
126
136
The exchange uses the following simplified BlockME-model:
127
137
@@ -166,7 +176,12 @@ You can find the details about the resulting testnet3 Bitcoin transaction [here]
166
176
* a _geth_ node is running on a virtual machine in a VSphere accessible from the local network.
167
177
* a _bitcoind_ (Bitcoin Core) node is running on a virtual machine in a VSphere accessible from the local network.
168
178
* The blockchain access layer is running in a local Tomcat server listening to port 8081
169
-
* The camunda engine is running in a local Tomcat server litening to port 8080
179
+
* The camunda engine is running in a local Tomcat server listening to port 8080
180
+
181
+
## BAL as a Smart Contract Invocation Protocol (SCIP) Gateway
182
+
183
+
The BAL provides a JSON-RPC API as a prototypical implementation of the [SCIP protocol](https://github.com/lampajr/scip) playing the role of a SCIP gateway.
184
+
185
+
### SCIP Case Study
170
186
171
-
## Case Study (For BlockME2)
172
-
Detailed case study for BlockME2 coming soon!
187
+
A case study that demonstrates the usage of the BAL as a SCIP gateway [can be found here](https://github.com/ghareeb-falazi/SCIP-CaseStudy).
0 commit comments