forked from lthn/blockchain
This pull request introduces a comprehensive new API interface for the blockchain, leveraging OpenAPI v3 to facilitate direct consumption of chain data by GUI and web applications. This change significantly refines the project's build infrastructure, incorporating Conan for dependency management and CMake for configuration, alongside the integration of an OpenAPI Generator to produce SDKs for multiple languages. ### Highlights * **New API Interface**: Introduced a new API interface using OpenAPI v3 to enable GUI/WEB development to consume chain data without needing custom server applications. * **Build System Enhancements**: Significant updates to the build system, including Makefile, CMake, and Conan configurations, to streamline the build process and support new functionalities. * **Multi-language SDK Generation**: Integrated OpenAPI Generator to automatically create SDKs for various programming languages, including Go, Angular, and PHP, simplifying client-side integration.
120 lines
6.8 KiB
Markdown
120 lines
6.8 KiB
Markdown
# Lethean Network—Ethics, Encoded.
|
|
|
|
> We are building upto a mainnet launch in 2026, documentation written as if mainnet is live.
|
|
|
|
A buildkit for deploying confidential information networks and commerce systems with immutable auditability.
|
|
|
|
Free for commercial, private, and patent use, self-host or join the community-run network that guarantees participant sovereignty by design.
|
|
|
|
|
|
|
|
[](https://discord.gg/pfgT2Kz)
|
|
|
|
Web2 Website: https://lt.hn/
|
|
|
|
Web3 Network Gateway [HNS](https://handshake.org): [https://lthn](https://www.namebase.io/domains/lthn)
|
|
<br/>_(our chain aliases will come with a working Web2(`*.lt.hn`)+Web3(`*.lthn`) domain name)_
|
|
|
|
|
|
### Dependencies
|
|
| component / version | minimum <br>(not recommended but may work) | recommended | most recent of what we have ever tested |
|
|
|-----------------------------------------------------------------------------|--------------------------------------------|----------------|-----------------------------------------|
|
|
| gcc (Linux) | 8.4.0 | 9.4.0 | 12.3.0 |
|
|
| llvm/clang (Linux) | UNKNOWN | 7.0.1 | 8.0.0 |
|
|
| [MSVC](https://visualstudio.microsoft.com/downloads/) (Windows) | 2017 (15.9.30) | 2022 (17.11.5) | 2022 (17.12.3) |
|
|
| [XCode](https://developer.apple.com/downloads/) (macOS) | 12.3 | 14.3 | 15.2 |
|
|
| [CMake](https://cmake.org/download/) | 3.26.3 | 3.26.3 | 3.31.6 |
|
|
|
|
## Cloning
|
|
|
|
Be sure to clone the repository properly, with `--recursive` flag, or you'll get angry:<br/>
|
|
`git clone --recursive https://github.com/letheanVPN/blockchain.git`
|
|
|
|
# Building
|
|
|
|
The project uses a `Makefile` that provides a simple and powerful interface for building.
|
|
It automatically handles dependency installation with Conan and compilation with CMake.
|
|
|
|
You need CMake and Make installed on your system, other than that you don't need to worry about Python, Conan, Boost, OpenSSL, or any other dependencies.
|
|
|
|
The final packages are created as they are due to a historical distribution method used in china: USB Stick, CD, DVD, etc.
|
|
|
|
We use CPack, so our packages are self-contained, have searchable HTML documentation, and are ready to be installed on any system.
|
|
|
|
To skip the packing step, use `make build` as defined in the section below for Advanced Build Customization
|
|
|
|
## Simple Workflow Builds (Recommended)
|
|
|
|
For most use cases, these two commands are all you need. They handle the entire build process from start to finish.
|
|
|
|
* **Build for Mainnet:**
|
|
```shell
|
|
make mainnet
|
|
```
|
|
|
|
* **Build for Testnet:**
|
|
```shell
|
|
make testnet
|
|
```
|
|
|
|
## Creating Release Packages
|
|
|
|
To create distributable packages (e.g., `.zip`, `.msi`, `.pkg`, `.deb`), run the `release` target. This will build the project, build the documentation, and then package everything.
|
|
|
|
```shell
|
|
make release TESTNET=1
|
|
```
|
|
The final packages will be located in the `build/packages/` directory
|
|
|
|
## Advanced Build Customization (Makefile Variables)
|
|
|
|
For advanced use cases, you can override variables in the `Makefile` to customize the build process.
|
|
|
|
* **Build a `testnet` version:**
|
|
```shell
|
|
make build TESTNET=1
|
|
```
|
|
* **Build a statically-linked version:**
|
|
```shell
|
|
make build STATIC=1
|
|
```
|
|
* **Build a Debug build with 8 compile threads:**
|
|
```shell
|
|
make build BUILD_TYPE=Debug CPU_CORES=8
|
|
```
|
|
* **Use custom CMakePresets:**
|
|
```shell
|
|
make build PRESET_CONFIGURE=my-config-preset PRESET_BUILD=my-build-preset
|
|
```
|
|
|
|
| Variable | Description | Default Value |
|
|
|--------------------|------------------------------------------------------------------------|-------------------------|
|
|
| `BUILD_TYPE` | Sets the build configuration (e.g., `Release`, `Debug`). | `Release` |
|
|
| `TESTNET` | Set to `1` to build for the test network. | `0` |
|
|
| `STATIC` | Set to `1` to link libraries statically. | `0` |
|
|
| `CPU_CORES` | Number of CPU cores to use for parallel compilation. | Auto-detected |
|
|
| `BUILD_VERSION` | The version string to embed in the binaries. | `6.0.1` |
|
|
| `BUILD_FOLDER` | The output directory for the build. | `build/release` |
|
|
| `PRESET_CONFIGURE` | The CMake preset to use for the `configure` step. | `conan-release` |
|
|
| `PRESET_BUILD` | The CMake preset to use for the `build` step. | `conan-release` |
|
|
| `CONAN_CACHE` | The path for the local Conan cache, where the dependencies are stored. | `./build/sdk` |
|
|
| `CONAN_EXECUTABLE` | The path to the usable Conan executable. | `./build/bin/conan` |
|
|
| `CONAN_URL` | The URL for the Conan remote repository. | `artifacts.host.uk.com` |
|
|
| `CONAN_USER` | The username for the Conan remote. | `public` |
|
|
| `CONAN_PASSWORD` | The password for the Conan remote. | |
|
|
|
|
## Cleaning the Build Directory
|
|
|
|
ALWAYS USE `make clean` to clean the build directory, manually deleting the `build/release`, `build/SOME_FOLDER` will cause you issues.
|
|
|
|
Our `make clean` triggers a cmake script that completely resets the build directory & dynamically added CMakePresets to its cached warm-up state,
|
|
the selective clean script can be edited here: `cmake/CleanBuild.cmake` or directly run from the repo root `cmake -P cmake/CleanBuild.cmake`
|
|
|
|
You can NUKE the build directory with `make clean-build` which is `rm -rf build`.
|
|
|
|
If you do manually delete build folders and get CMake errors (if you have compiled anything previously, you will),
|
|
the ConanPresets.json file has entries in the `include` property, delete them all and try again.
|
|
|
|
This happens because CMakePresets.json includes ConanPresets.json, that has the list of toolchains to use that gets populated during the CMake config step,
|
|
when you manually delete a folder, the toolchain is now a broken path, and CMake throws a fatal error.
|
|
|