Skip to content

Commit fb82f5d

Browse files
author
Akash Goyal
committed
Minor updates in master README.md
1 parent dd4efe8 commit fb82f5d

File tree

1 file changed

+32
-42
lines changed

1 file changed

+32
-42
lines changed

README.md

Lines changed: 32 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,17 @@ when a backwards incompatible change is made.
3838

3939
## Install and Build (Ubuntu Linux 18.04)
4040

41-
Concord-BFT supports two kinds of builds: native and docker.
41+
Concord-BFT supports two kinds of builds are,
42+
* Docker
43+
* Native
4244

43-
The docker build is **strongly recommended**.
45+
The docker build is **strongly recommended**
4446

4547
### Docker
4648

47-
* Install the latest docker.
49+
* [Install the latest docker] (https://docs.docker.com/engine/install/ubuntu/).
4850
* Optional: [configure docker as non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).
49-
* Build:
51+
* Build concord-bft
5052
```sh
5153
cd concord-bft
5254
make
@@ -55,9 +57,11 @@ make test
5557
Run `make help` to see more commands.
5658

5759
Note:
60+
* If you face any format related issues than run `make format` before running `make` command to build concord-bft.
5861
* The output binaries are stored in the host's `concord-bft/build`.
59-
* `Makefile` is configurable.
60-
For example, if you want to use another compiler you may pass it to the `make`:
62+
* Default compiler is clang and clang++.
63+
* `Makefile` is configurable. If you want to use another compiler you may pass it to the `make`.
64+
For example,
6165
```
6266
make CONCORD_BFT_CONTAINER_CXX=g++ \
6367
CONCORD_BFT_CONTAINER_CC=gcc \
@@ -66,17 +70,12 @@ make CONCORD_BFT_CONTAINER_CXX=g++ \
6670

6771
Other build options, including passthrough options for CMake, are defined in the Makefile and prefixed with `CONCORD_BFT_`. Variables that are capable of being overridden on the commandline are set with the Make conditional operator `?=` and are at the beginning of [Makefile](Makefile). Please check that file for options.
6872

69-
#### Select comm module
70-
One option that is worth calling out explicitly is the communication (transport) library. Transport defaults to TLS and can be configured explicitly by setting the `CONCORD_BFT_CMAKE_TRANSPORT` flag. The flag defaults to **TLS**, but also supports **UDP** and **TCP**. These can be useful because the use of pinned certificates for TLS requires an out of band setup.
71-
72-
See [create_tls_certs.sh](scripts/linux/create_tls_certs.sh) for an example. This script is used in apollo tests. For production usage, an out of band deployment for each replica must be used to avoid revealing private keys to each replica.
73-
7473
### Native
7574

7675
```sh
7776
git clone https://github.com/vmware/concord-bft
7877
cd concord-bft
79-
sudo ./install_deps.sh # Installs all dependencies and 3rd parties
78+
sudo ./install_deps.sh # Install all dependencies and 3rd parties
8079
mkdir build
8180
cd build
8281
cmake ..
@@ -88,21 +87,17 @@ In order to turn on or off various options, you need to change your cmake config
8887
done by passing arguments to cmake with a `-D` prefix: e.g. `cmake -DBUILD_TESTING=OFF`. Note that
8988
make must be run afterwards to build according to the configuration. Please see [CMakeLists.txt](CMakeLists.txt) for configurable options.
9089

91-
#### Select comm module
92-
One option that is worth calling out explicitly is the communication (transport) library.
9390

94-
We support both UDP and TCP communication. UDP is the default. In order to
95-
enable TCP communication, build with `-DBUILD_COMM_TCP_PLAIN=TRUE` in the cmake
96-
instructions shown above. If set, the test client will run using TCP. If you
97-
wish to use TCP in your application, you need to build the TCP module as
98-
mentioned above and then create the communication object using CommFactory and
99-
passing PlainTcpConfig object to it.
100-
101-
We also support TCP over TLS communication. To enable it, change the
102-
`BUILD_COMM_TCP_TLS` flag to `TRUE` in the main CMakeLists.txt file. When
103-
running simpleTest using the testReplicasAndClient.sh - there is no need to create TLS certificates manually. The script will use the `create_tls_certs.sh` (located under the scripts/linux folder) to create certificates. The latter can be used to create TLS files for any number of replicas, e.g. when extending existing tests.
91+
### Select comm module
92+
One option that is worth calling out explicitly is the communication (transport) library. Transport defaults to TLS and can be configured explicitly by setting the `CONCORD_BFT_CMAKE_TRANSPORT` flag. The flag defaults to **TLS**, but also supports **UDP** and **TCP**.
93+
In order to enable TCP or UDP communication, build with below flags,
94+
```
95+
make build CONCORD_BFT_CMAKE_TRANSPORT=TCP # To enable TCP communication
96+
make build CONCORD_BFT_CMAKE_TRANSPORT=UDP # To enable UDP communication
97+
```
98+
These can be useful because the use of pinned certificates for TLS requires an out of band setup.
10499

105-
As we used pinned certificates for TLS, the user will have to manually provide these. THey can use the [create_tls_certs.sh](scripts/linux/create_tls_certs.sh) script as an example.
100+
See [create_tls_certs.sh](scripts/linux/create_tls_certs.sh) for an example. This script is used in apollo tests. For production usage, an out of band deployment for each replica must be used to avoid revealing private keys to each replica.
106101

107102

108103
### C++ Linter
@@ -178,20 +173,18 @@ Please find more details about the Apollo framework [here](tests/apollo/README.m
178173
## Run examples
179174

180175

181-
### Simple test application (4 replicas and 1 client on a single machine)
182-
183-
Tests are compiled into in the build directory and can be run from anywhere as
184-
long as they aren't moved.
185-
186-
Run the following from the top level concord-bft directory:
187-
188-
./build/tests/simpleTest/scripts/testReplicasAndClient.sh
189-
190-
#### Using simple test application via Python script
191-
192-
You can use the simpleTest.py script to run various configurations via a simple
193-
command line interface.
194-
Please find more information [here](./tests/simpleTest/README.md)
176+
### Simple Test application
177+
Simple Test application is used to demonstrate how to use concord and enables you to perform READ and WRITE requests
178+
from client to replicas on a single-register state machine and then the consensus algorithm is run using this setup.
179+
Simple Test is compiled into the build directory and can be run from anywhere as long as it isn't moved.
180+
Simple Test can be run using 2 methods:
181+
#### 1) Shell script
182+
./build/tests/simpleTest/scripts/testReplicasAndClient.sh
183+
You can use this shell script to run Simple Test using default configuration i.e. 4 replicas and 1 client.
184+
#### 2) Python script
185+
./build/tests/simpleTest/scripts/simpleTest.py
186+
You can use the simpleTest.py script to run various configurations via a simple command line interface.
187+
Please find more information on Simple Test [here](./tests/simpleTest/README.md)
195188

196189
## Directory Structure
197190

@@ -225,9 +218,6 @@ signed our contributor license agreement (CLA), our bot will update the issue wh
225218
questions about the CLA process, please refer to our [FAQ](https://cla.vmware.com/faq). For more detailed information,
226219
refer to [CONTRIBUTING.md](CONTRIBUTING.md).
227220

228-
## Notes
229-
The library calls `std::terminate()` when it cannot continue in a safe manner.
230-
In that way, users can install a handler that does something different than just calling `std::abort()`.
231221

232222
## Community
233223

0 commit comments

Comments
 (0)