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
+20-28Lines changed: 20 additions & 28 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -38,15 +38,17 @@ when a backwards incompatible change is made.
38
38
39
39
## Install and Build (Ubuntu Linux 18.04)
40
40
41
-
Concord-BFT supports two kinds of builds: native and docker.
41
+
Concord-BFT supports two kinds of builds are,
42
+
* Docker
43
+
* Native
42
44
43
-
The docker build is **strongly recommended**.
45
+
The docker build is **strongly recommended**
44
46
45
47
### Docker
46
48
47
-
* Install the latest docker.
49
+
*[Install the latest docker] (https://docs.docker.com/engine/install/ubuntu/).
48
50
* 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
50
52
```sh
51
53
cd concord-bft
52
54
make
@@ -55,9 +57,11 @@ make test
55
57
Run `make help` to see more commands.
56
58
57
59
Note:
60
+
* If you face any format related issues than run `make format` before running `make` command to build concord-bft.
58
61
* 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,
61
65
```
62
66
make CONCORD_BFT_CONTAINER_CXX=g++ \
63
67
CONCORD_BFT_CONTAINER_CC=gcc \
@@ -66,17 +70,12 @@ make CONCORD_BFT_CONTAINER_CXX=g++ \
66
70
67
71
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.
68
72
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.
sudo ./install_deps.sh # Installs all dependencies and 3rd parties
78
+
sudo ./install_deps.sh # Install all dependencies and 3rd parties
80
79
mkdir build
81
80
cd build
82
81
cmake ..
@@ -88,21 +87,17 @@ In order to turn on or off various options, you need to change your cmake config
88
87
done by passing arguments to cmake with a `-D` prefix: e.g. `cmake -DBUILD_TESTING=OFF`. Note that
89
88
make must be run afterwards to build according to the configuration. Please see [CMakeLists.txt](CMakeLists.txt) for configurable options.
90
89
91
-
#### Select comm module
92
-
One option that is worth calling out explicitly is the communication (transport) library.
93
-
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
90
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.
104
99
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.
106
101
107
102
108
103
### C++ Linter
@@ -225,9 +220,6 @@ signed our contributor license agreement (CLA), our bot will update the issue wh
225
220
questions about the CLA process, please refer to our [FAQ](https://cla.vmware.com/faq). For more detailed information,
226
221
refer to [CONTRIBUTING.md](CONTRIBUTING.md).
227
222
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()`.
0 commit comments