TON logo

Reference implementation of TON Node and tools


## [![TON Overflow Group][ton-overflow-badge]][ton-overflow-url] [![Stack Overflow Group][stack-overflow-badge]][stack-overflow-url] [![Telegram Community Chat][telegram-tondev-badge]][telegram-tondev-url] [![Telegram Community Group][telegram-community-badge]][telegram-community-url] [![Telegram Foundation Group][telegram-foundation-badge]][telegram-foundation-url] [![Twitter Group][twitter-badge]][twitter-url] [telegram-foundation-badge]: https://img.shields.io/badge/TON%20Foundation-2CA5E0?logo=telegram&logoColor=white&style=flat [telegram-community-badge]: https://img.shields.io/badge/TON%20Community-2CA5E0?logo=telegram&logoColor=white&style=flat [telegram-tondev-badge]: https://img.shields.io/badge/chat-TONDev-2CA5E0?logo=telegram&logoColor=white&style=flat [telegram-foundation-url]: https://t.me/tonblockchain [telegram-community-url]: https://t.me/toncoin [telegram-tondev-url]: https://t.me/tondev_eng [twitter-badge]: https://img.shields.io/twitter/follow/ton_blockchain [twitter-url]: https://twitter.com/ton_blockchain [stack-overflow-badge]: https://img.shields.io/badge/-Stack%20Overflow-FE7A16?style=flat&logo=stack-overflow&logoColor=white [stack-overflow-url]: https://stackoverflow.com/questions/tagged/ton [ton-overflow-badge]: https://img.shields.io/badge/-TON%20Overflow-FE7A16?style=flat&logo=stack-overflow&logoColor=white [ton-overflow-url]: https://answers.ton.org Main TON monorepo, which includes the code of the node/validator, lite-client, tonlib, FunC compiler, etc. ## The Open Network __The Open Network (TON)__ is a fast, secure, scalable blockchain focused on handling _millions of transactions per second_ (TPS) with the goal of reaching hundreds of millions of blockchain users. - To learn more about different aspects of TON blockchain and its underlying ecosystem check [documentation](https://ton.org/docs) - To run node, validator or lite-server check [Participate section](https://ton.org/docs/participate/nodes/run-node) - To develop decentralised apps check [Tutorials](https://ton.org/docs/develop/smart-contracts/), [FunC docs](https://ton.org/docs/develop/func/overview) and [DApp tutorials](https://ton.org/docs/develop/dapps/) - To work on TON check [wallets](https://ton.app/wallets), [explorers](https://ton.app/explorers), [DEXes](https://ton.app/dex) and [utilities](https://ton.app/utilities) - To interact with TON check [APIs](https://ton.org/docs/develop/dapps/apis/) ## Updates flow * **master branch** - mainnet is running on this stable branch. Only emergency updates, urgent updates, or updates that do not affect the main codebase (GitHub workflows / docker images / documentation) are committed directly to this branch. * **testnet branch** - testnet is running on this branch. The branch contains a set of new updates. After testing, the testnet branch is merged into the master branch and then a new set of updates is added to testnet branch. * **backlog** - other branches that are candidates to getting into the testnet branch in the next iteration. Usually, the response to your pull request will indicate which section it falls into. ## "Soft" Pull Request rules * Thou shall not merge your own PRs, at least one person should review the PR and merge it (4-eyes rule) * Thou shall make sure that workflows are cleanly completed for your PR before considering merge ## Build TON blockchain ### Ubuntu 20.4, 22.04 (x86-64, aarch64) Install additional system libraries ```bash sudo apt-get update sudo apt-get install -y build-essential git cmake ninja-build zlib1g-dev libsecp256k1-dev libmicrohttpd-dev libsodium-dev wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 16 all ``` Compile TON binaries ```bash cp assembly/native/build-ubuntu-shared.sh . chmod +x build-ubuntu-shared.sh ./build-ubuntu-shared.sh ``` ### MacOS 11, 12 (x86-64, aarch64) ```bash cp assembly/native/build-macos-shared.sh . chmod +x build-macos-shared.sh ./build-macos-shared.sh ``` ### Windows 10, 11, Server (x86-64) You need to install `MS Visual Studio 2022` first. Go to https://www.visualstudio.com/downloads/ and download `MS Visual Studio 2022 Community`. Launch installer and select `Desktop development with C++`. After installation, also make sure that `cmake` is globally available by adding `C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin` to the system `PATH` (adjust the path per your needs). Open an elevated (Run as Administrator) `x86-64 Native Tools Command Prompt for VS 2022`, go to the root folder and execute: ```bash copy assembly\native\build-windows.bat . build-windows.bat ``` ### Building TON to WebAssembly Install additional system libraries on Ubuntu ```bash sudo apt-get update sudo apt-get install -y build-essential git cmake ninja-build zlib1g-dev libsecp256k1-dev libmicrohttpd-dev libsodium-dev wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh 16 all ``` Compile TON binaries with emscripten ```bash cd assembly/wasm chmod +x fift-func-wasm-build-ubuntu.sh ./fift-func-wasm-build-ubuntu.sh ``` ### Building TON tonlib library for Android (arm64-v8a, armeabi-v7a, x86, x86-64) Install additional system libraries on Ubuntu ```bash sudo apt-get update sudo apt-get install -y build-essential git cmake ninja-build automake libtool texinfo autoconf libgflags-dev \ zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev \ libtool autoconf libsodium-dev libsecp256k1-dev ``` Compile TON tonlib library ```bash cp assembly/android/build-android-tonlib.sh . chmod +x build-android-tonlib.sh ./build-android-tonlib.sh ``` ### Build TON portable binaries with Nix package manager You need to install Nix first. ```bash sh <(curl -L https://nixos.org/nix/install) --daemon ``` Then compile TON with Nix by executing below command from the root folder: ```bash cp -r assembly/nix/* . export NIX_PATH=nixpkgs=https://github.com/nixOS/nixpkgs/archive/23.05.tar.gz nix-build linux-x86-64-static.nix ``` More examples for other platforms can be found under `assembly/nix`. ## Running tests Tests are executed by running `ctest` in the build directory. See `doc/Tests.md` for more information.