{"id":13650574,"url":"https://github.com/eosnetworkfoundation/mandel","last_synced_at":"2025-04-22T18:32:17.351Z","repository":{"id":37057318,"uuid":"444145630","full_name":"eosnetworkfoundation/mandel","owner":"eosnetworkfoundation","description":"Obsolete. Use https://github.com/AntelopeIO/leap instead.","archived":false,"fork":false,"pushed_at":"2022-08-18T18:47:43.000Z","size":163806,"stargazers_count":87,"open_issues_count":33,"forks_count":30,"subscribers_count":20,"default_branch":"main","last_synced_at":"2024-01-25T01:10:42.829Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eosnetworkfoundation.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-01-03T17:29:55.000Z","updated_at":"2023-12-06T09:52:41.000Z","dependencies_parsed_at":"2022-08-08T19:01:33.350Z","dependency_job_id":null,"html_url":"https://github.com/eosnetworkfoundation/mandel","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eosnetworkfoundation%2Fmandel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eosnetworkfoundation%2Fmandel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eosnetworkfoundation%2Fmandel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eosnetworkfoundation%2Fmandel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eosnetworkfoundation","download_url":"https://codeload.github.com/eosnetworkfoundation/mandel/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250297478,"owners_count":21407216,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-02T02:00:37.957Z","updated_at":"2025-04-22T18:32:14.682Z","avatar_url":"https://github.com/eosnetworkfoundation.png","language":"C++","funding_links":[],"categories":["Mandel"],"sub_categories":[],"readme":"# Mandel\n\n⚠️ This repository contains an archive of the C++ implementation (code named \"Mandel\") for the blockchain node software of the EOSIO protocol. The repository is no longer maintained and Mandel is obsolete. It is replaced by [Leap](https://github.com/AntelopeIO/leap) which implements the Antelope protocol, an evolution of the EOSIO protocol.\n\n## Software Installation\n\nVisit the [release page](https://github.com/eosnetworkfoundation/mandel/releases) for Ubuntu binaries. This is the fastest way to get started with the software.\n\n### Building From Source\n\nRecent Ubuntu LTS releases are the only Linux distributions that we fully support. Other Linux distros and other POSIX operating systems (such as macOS) are tended to on a best-effort basis and may not be full featured. Notable requirements to build are:\n* C++17 compiler and standard library\n* boost 1.67+\n* CMake 3.8+\n* (for Linux only) LLVM 7 - 11 (newer versions do not work)\n\nA few other common libraries are tools also required such as openssl 1.1+, libcurl, curl, libusb, GMP, Python 3, and zlib.\n\n**A Warning On Parallel Compilation Jobs (`-j` flag)**: When building C/C++ software often the build is performed in parallel via a command such as `make -j $(nproc)` which uses the number of CPU cores as the number of compilation jobs to perform simultaneously. However, be aware that some compilation units (.cpp files) in mandel are extremely complex and will consume nearly 4GB of memory to compile. You may need to reduce the level of parallelization depending on the amount of memory on your build host. e.g. instead of `make -j $(nproc)` run `make -j2`. Failures due to memory exhaustion will typically but not always manifest as compiler crashes.\n\nGenerally we recommend performing what we refer to as a \"pinned build\" which ensures the compiler and boost version remain the same between builds of different mandel versions (mandel requires these versions remain the same otherwise its state needs to be repopulated from a portable snapshot).\n\n#### Building Pinned Build Binary Packages\nIn the directory `\u003cmandel src\u003e/scripts` you will find the two scripts `install_deps.sh` and `pinned_build.sh`. If you haven't installed build dependencies then run `install_deps.sh`. Then run `pinned_build.sh \u003cdependencies directory\u003e \u003cmandel build directory\u003e \u003cnumber of jobs\u003e`.\n\nThe dependencies directory is where the script will pull the C++ dependencies that need to be built with the pinned compiler for building the pinned binaries for binary packaging.\n\nThe binary package will be produced in the mandel build directory that was supplied.\n\n#### Manual (non \"pinned\") Build Instructions\n\n\u003cdetails\u003e\n  \u003csummary\u003eUbuntu 20.04 \u0026 22.04 Build Instructions\u003c/summary\u003e\n\nInstall required dependencies: \n```\napt-get update \u0026\u0026 apt-get install   \\\n        build-essential             \\\n        cmake                       \\\n        curl                        \\\n        git                         \\\n        libboost-all-dev            \\\n        libcurl4-openssl-dev        \\\n        libgmp-dev                  \\\n        libssl-dev                  \\\n        libusb-1.0-0-dev            \\\n        llvm-11-dev                 \\\n        pkg-config\n```\nand perform the build:\n```\ngit submodule update --init --recursive\nmkdir build\ncd build\ncmake -DCMAKE_BUILD_TYPE=Release ..\nmake -j $(nproc) package\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eUbuntu 18.04 Build Instructions\u003c/summary\u003e\n\nInstall required dependencies. You will need to build Boost from source on this distribution. \n```\napt-get update \u0026\u0026 apt-get install   \\\n        build-essential             \\\n        cmake                       \\\n        curl                        \\\n        g++-8                       \\\n        git                         \\\n        libcurl4-openssl-dev        \\\n        libgmp-dev                  \\\n        libssl-dev                  \\\n        libusb-1.0-0-dev            \\\n        llvm-7-dev                  \\\n        pkg-config                  \\\n        python3                     \\\n        zlib1g-dev\n        \ncurl -L https://boostorg.jfrog.io/artifactory/main/release/1.79.0/source/boost_1_79_0.tar.bz2 | tar jx \u0026\u0026 \\\n   cd boost_1_79_0 \u0026\u0026                                                                                     \\\n   ./bootstrap.sh --prefix=$HOME/boost1.79 \u0026\u0026                                                             \\\n   ./b2 --with-iostreams --with-date_time --with-filesystem --with-system                                 \\\n        --with-program_options --with-chrono --with-test -j$(nproc) install \u0026\u0026                            \\\n   cd ..\n```\nand perform the build:\n```\ngit submodule update --init --recursive\nmkdir build\ncd build\ncmake -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 \\\n      -DCMAKE_PREFIX_PATH=\"$HOME/boost1.79;/usr/lib/llvm-7/\"  -DCMAKE_BUILD_TYPE=Release .. \\\nmake -j $(nproc) package\n```\nAfter building you may remove the `$HOME/boost1.79` directory, or you may keep it around until next time building the software.\n\u003c/details\u003e\n\n### Running Tests\n\nWhen building from source it's recommended to run at least what we refer to as the \"parallelizable tests\". Not included by default in the \"parallelizable tests\" are the WASM spec tests which can add additional coverage and can also be run in parallel.\n\n```\ncd build\n\n# \"parallelizable tests\": the minimum test set that should be run\nctest -j $(nproc) -LE _tests\n\n# Also consider running the WASM spec tests for more coverage\nctest -j $(nproc) -L wasm_spec_tests\n```\n\nSome other tests are available and recommended but be aware they can be sensitive to other software running on the same host and they may **SIGKILL** other nodeos instances running on the host.\n```\ncd build\n\n# These tests can't run in parallel but are recommended.\nctest -L \"nonparallelizable_tests\"\n\n# These tests can't run in parallel. They also take a long time to run.\nctest -L \"long_running_tests\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feosnetworkfoundation%2Fmandel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feosnetworkfoundation%2Fmandel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feosnetworkfoundation%2Fmandel/lists"}