2022-12-22 14:52:53 +00:00
< div align = "center" >
2023-03-05 11:01:26 +00:00
< a href = "https://ton.org" >
< picture >
< source media = "(prefers-color-scheme: dark)" srcset = "https://ton.org/download/ton_logo_dark_background.svg" >
< img alt = "TON logo" src = "https://ton.org/download/ton_logo_light_background.svg" >
< / picture >
< / a >
2023-03-04 19:22:11 +00:00
< h3 > Reference implementation of TON Node and tools< / h3 >
2022-12-22 14:52:53 +00:00
< hr / >
< / div >
2023-03-04 19:22:11 +00:00
##
2024-03-06 14:15:49 +00:00
< p align = "center" >
< a href = "https://tonresear.ch" >
< img src = "https://img.shields.io/badge/TON%20Research-0098EA?style=flat&logo=discourse&label=Forum&labelColor=gray" alt = "Ton Research" >
< / a >
< a href = "https://t.me/toncoin" >
< img src = "https://img.shields.io/badge/TON%20Community-0098EA?logo=telegram&logoColor=white&style=flat" alt = "Telegram Community Group" >
< / a >
< a href = "https://t.me/tonblockchain" >
< img src = "https://img.shields.io/badge/TON%20Foundation-0098EA?logo=telegram&logoColor=white&style=flat" alt = "Telegram Foundation Group" >
< / a >
< a href = "https://t.me/tondev_eng" >
< img src = "https://img.shields.io/badge/chat-TONDev-0098EA?logo=telegram&logoColor=white&style=flat" alt = "Telegram Community Chat" >
< / a >
< / p >
< p align = "center" >
< a href = "https://twitter.com/ton_blockchain" >
< img src = "https://img.shields.io/twitter/follow/ton_blockchain" alt = "Twitter Group" >
< / a >
< a href = "https://answers.ton.org" >
< img src = "https://img.shields.io/badge/-TON%20Overflow-FE7A16?style=flat&logo=stack-overflow&logoColor=white" alt = "TON Overflow Group" >
< / a >
< a href = "https://stackoverflow.com/questions/tagged/ton" >
< img src = "https://img.shields.io/badge/-Stack%20Overflow-FE7A16?style=flat&logo=stack-overflow&logoColor=white" alt = "Stack Overflow Group" >
< / a >
< / p >
2022-08-25 08:04:08 +00:00
2022-05-12 13:05:01 +00:00
Main TON monorepo, which includes the code of the node/validator, lite-client, tonlib, FunC compiler, etc.
2023-03-04 19:22:11 +00:00
## 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.
2023-05-24 07:37:22 +00:00
- To learn more about different aspects of TON blockchain and its underlying ecosystem check [documentation ](https://ton.org/docs )
2023-03-04 19:22:11 +00:00
- To run node, validator or lite-server check [Participate section ](https://ton.org/docs/participate/nodes/run-node )
2025-01-27 07:35:56 +00:00
- To develop decentralised apps check [Tutorials ](https://docs.ton.org/v3/guidelines/smart-contracts/guidelines ), [FunC docs ](https://ton.org/docs/develop/func/overview ) and [DApp tutorials ](https://docs.ton.org/v3/guidelines/dapps/overview )
2023-03-04 19:22:11 +00:00
- 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 )
2025-01-27 07:35:56 +00:00
- To interact with TON check [APIs ](https://docs.ton.org/v3/guidelines/dapps/apis-sdks/overview )
2023-03-04 19:22:11 +00:00
Improve TON build scripts and some tests (#855)
* fix macOS github actions
* fix android tonlib GH action;
* fixing wasm GH action
* strip binaries
* fix randomly failing ubuntu and wasm GH actions
* fix randomly failing ubuntu and wasm GH actions
* revert some changes
* adding more nix scripts and automated native build scripts;
debug static ton compilation
* minor fix
* do not use pkg_config if path specified
* move wasm script, run with sudo action script
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* ok
* some adjustments for android and win builds
* some adjustments for android and win builds
* moving stripping inside the build script
* access rights handling; adding simple binaries' tests
* make lite-client-common, fift-lib and smc-envelope deliberately static;
add -a (artifacts) flag to build scripts;
* minor wasm build fix;
create separate tonlib android build script;
remove outdated __has_trivial_copy(T)
* add windows build - WIP
* adjust android build;
improve win build;
* adjust sodium paths for android build; use proper compiler for windows build;
* add github windows build auxiliary file
* adjust wasm build
* add portable ubuntu build
* exclude some unstable tests for some time
* compile portable binaries on ubuntu-20.04
* exclude some unstable tests
* include static gsl
* restart builds
* restart builds
* restart builds
* remove libreadline, gsl and blas dependencies in linux build
* add macos build script
* install missing autoconf in macos builds
* enable all tests and see what fails
* enable win tests and restart others
* enable win tests and fix test-smartcont.cpp
* enable win tests
* use clang-16 on mac builds, add blockchain-explorer for ubuntu builds, add portable macos build
* move sudo part outside a build scripts
* move sudo part outside a build scripts
* run llvm install with sudo
* remove libgnutls28-dev before ubuntu static compilation, include blockchain-explorer into artifacts;
remove warning: definition of implicit copy constructor for 'Stat' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
* rework wrong decision, put back system gnutls, but compile libmicrohttpd with --disable-https
* add jenkins pipeline sceleton
* WIP jenkins pipeline sceleton
* WIP jenkins pipeline changes
* WIP jenkins pipeline: add stage timout, zip and group artifacts
* WIP jenkins pipeline: macos portable build fix
* WIP jenkins pipeline: wording
* WIP jenkins pipeline: add android tonlib
* WIP jenkins pipeline: add was binaries
* WIP jenkins pipeline: add TOTAL_MEMORY 1.5gb to funcfiftlib wasm linking
* WIP jenkins pipeline: add nix build on linux aarch64
* WIP jenkins pipeline: funcfiftlib compilation fails that 16mb mem is not enough, increase to 32mb
* WIP jenkins pipeline: enable test in nix build
* WIP jenkins pipeline: add linux x86-64 nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: nix linux arm64 with openssl 1.1 for now
* WIP jenkins pipeline: working ubuntu arm64 libtonjson
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix 2
* WIP jenkins pipeline: merry christmas
* WIP jenkins pipeline: merry christmas 2
* WIP jenkins pipeline: remove native static builds
* WIP jenkins pipeline: enable more tests
* WIP jenkins pipeline: zip artifacts better
* WIP jenkins pipeline: get rid of path in the final zip
* WIP jenkins pipeline: minor fix, include lib and smartcont folders
* WIP jenkins pipeline: minor fix, include lib and smartcont folders into nix artifacts also
* WIP jenkins pipeline: minor fix
* WIP jenkins pipeline: minor fix
* adjust github actions for new nix builds
* cleanup
* cleanup
* cleanup
* cleanup
* rename libtonlibjson.so.0.5 to libtonlibjson.so
* Add TON build instructions to README.md
* simplify
* fix test-tonlib-offline
* set timeout per test of 300 sec
* set timeout per test of 600 sec for non nix builds
* increase test timeout to 900 sec; minor changes
* use MS VS 2022 for win TON compilation; update README.md
* use MS VS 2022 for win TON compilation; update README.md
* change path to MSVC in github workflow
* change path to MSVC in groovy pipeline
* compile ton on win, with msvc 2022 community and enterprise versions
* minor fixes
* improve network tests
* remove TON compilation against macos-11 github runner
* add `choco feature enable -n allowEmptyChecksums` since pkg-config-lite-0.28-1 does not have a checksum
* abort win compilation if 3pp can't be downloaded
* increase test timeout to 30 min
* improving test-catchain
2024-01-15 20:48:04 +00:00
## Updates flow
2022-05-12 13:05:01 +00:00
* **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.
2021-02-10 22:21:26 +00:00
## "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
Improve TON build scripts and some tests (#855)
* fix macOS github actions
* fix android tonlib GH action;
* fixing wasm GH action
* strip binaries
* fix randomly failing ubuntu and wasm GH actions
* fix randomly failing ubuntu and wasm GH actions
* revert some changes
* adding more nix scripts and automated native build scripts;
debug static ton compilation
* minor fix
* do not use pkg_config if path specified
* move wasm script, run with sudo action script
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* ok
* some adjustments for android and win builds
* some adjustments for android and win builds
* moving stripping inside the build script
* access rights handling; adding simple binaries' tests
* make lite-client-common, fift-lib and smc-envelope deliberately static;
add -a (artifacts) flag to build scripts;
* minor wasm build fix;
create separate tonlib android build script;
remove outdated __has_trivial_copy(T)
* add windows build - WIP
* adjust android build;
improve win build;
* adjust sodium paths for android build; use proper compiler for windows build;
* add github windows build auxiliary file
* adjust wasm build
* add portable ubuntu build
* exclude some unstable tests for some time
* compile portable binaries on ubuntu-20.04
* exclude some unstable tests
* include static gsl
* restart builds
* restart builds
* restart builds
* remove libreadline, gsl and blas dependencies in linux build
* add macos build script
* install missing autoconf in macos builds
* enable all tests and see what fails
* enable win tests and restart others
* enable win tests and fix test-smartcont.cpp
* enable win tests
* use clang-16 on mac builds, add blockchain-explorer for ubuntu builds, add portable macos build
* move sudo part outside a build scripts
* move sudo part outside a build scripts
* run llvm install with sudo
* remove libgnutls28-dev before ubuntu static compilation, include blockchain-explorer into artifacts;
remove warning: definition of implicit copy constructor for 'Stat' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
* rework wrong decision, put back system gnutls, but compile libmicrohttpd with --disable-https
* add jenkins pipeline sceleton
* WIP jenkins pipeline sceleton
* WIP jenkins pipeline changes
* WIP jenkins pipeline: add stage timout, zip and group artifacts
* WIP jenkins pipeline: macos portable build fix
* WIP jenkins pipeline: wording
* WIP jenkins pipeline: add android tonlib
* WIP jenkins pipeline: add was binaries
* WIP jenkins pipeline: add TOTAL_MEMORY 1.5gb to funcfiftlib wasm linking
* WIP jenkins pipeline: add nix build on linux aarch64
* WIP jenkins pipeline: funcfiftlib compilation fails that 16mb mem is not enough, increase to 32mb
* WIP jenkins pipeline: enable test in nix build
* WIP jenkins pipeline: add linux x86-64 nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: nix linux arm64 with openssl 1.1 for now
* WIP jenkins pipeline: working ubuntu arm64 libtonjson
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix 2
* WIP jenkins pipeline: merry christmas
* WIP jenkins pipeline: merry christmas 2
* WIP jenkins pipeline: remove native static builds
* WIP jenkins pipeline: enable more tests
* WIP jenkins pipeline: zip artifacts better
* WIP jenkins pipeline: get rid of path in the final zip
* WIP jenkins pipeline: minor fix, include lib and smartcont folders
* WIP jenkins pipeline: minor fix, include lib and smartcont folders into nix artifacts also
* WIP jenkins pipeline: minor fix
* WIP jenkins pipeline: minor fix
* adjust github actions for new nix builds
* cleanup
* cleanup
* cleanup
* cleanup
* rename libtonlibjson.so.0.5 to libtonlibjson.so
* Add TON build instructions to README.md
* simplify
* fix test-tonlib-offline
* set timeout per test of 300 sec
* set timeout per test of 600 sec for non nix builds
* increase test timeout to 900 sec; minor changes
* use MS VS 2022 for win TON compilation; update README.md
* use MS VS 2022 for win TON compilation; update README.md
* change path to MSVC in github workflow
* change path to MSVC in groovy pipeline
* compile ton on win, with msvc 2022 community and enterprise versions
* minor fixes
* improve network tests
* remove TON compilation against macos-11 github runner
* add `choco feature enable -n allowEmptyChecksums` since pkg-config-lite-0.28-1 does not have a checksum
* abort win compilation if 3pp can't be downloaded
* increase test timeout to 30 min
* improving test-catchain
2024-01-15 20:48:04 +00:00
## Build TON blockchain
2025-01-21 08:27:25 +00:00
### Ubuntu 20.4, 22.04, 24.04 (x86-64, aarch64)
Improve TON build scripts and some tests (#855)
* fix macOS github actions
* fix android tonlib GH action;
* fixing wasm GH action
* strip binaries
* fix randomly failing ubuntu and wasm GH actions
* fix randomly failing ubuntu and wasm GH actions
* revert some changes
* adding more nix scripts and automated native build scripts;
debug static ton compilation
* minor fix
* do not use pkg_config if path specified
* move wasm script, run with sudo action script
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* weird, fixing - cp: missing destination file operand after 'assembly/native/build-ubuntu-20.04-shared.sh'
* ok
* some adjustments for android and win builds
* some adjustments for android and win builds
* moving stripping inside the build script
* access rights handling; adding simple binaries' tests
* make lite-client-common, fift-lib and smc-envelope deliberately static;
add -a (artifacts) flag to build scripts;
* minor wasm build fix;
create separate tonlib android build script;
remove outdated __has_trivial_copy(T)
* add windows build - WIP
* adjust android build;
improve win build;
* adjust sodium paths for android build; use proper compiler for windows build;
* add github windows build auxiliary file
* adjust wasm build
* add portable ubuntu build
* exclude some unstable tests for some time
* compile portable binaries on ubuntu-20.04
* exclude some unstable tests
* include static gsl
* restart builds
* restart builds
* restart builds
* remove libreadline, gsl and blas dependencies in linux build
* add macos build script
* install missing autoconf in macos builds
* enable all tests and see what fails
* enable win tests and restart others
* enable win tests and fix test-smartcont.cpp
* enable win tests
* use clang-16 on mac builds, add blockchain-explorer for ubuntu builds, add portable macos build
* move sudo part outside a build scripts
* move sudo part outside a build scripts
* run llvm install with sudo
* remove libgnutls28-dev before ubuntu static compilation, include blockchain-explorer into artifacts;
remove warning: definition of implicit copy constructor for 'Stat' is deprecated because it has a user-declared copy assignment operator [-Wdeprecated-copy]
* rework wrong decision, put back system gnutls, but compile libmicrohttpd with --disable-https
* add jenkins pipeline sceleton
* WIP jenkins pipeline sceleton
* WIP jenkins pipeline changes
* WIP jenkins pipeline: add stage timout, zip and group artifacts
* WIP jenkins pipeline: macos portable build fix
* WIP jenkins pipeline: wording
* WIP jenkins pipeline: add android tonlib
* WIP jenkins pipeline: add was binaries
* WIP jenkins pipeline: add TOTAL_MEMORY 1.5gb to funcfiftlib wasm linking
* WIP jenkins pipeline: add nix build on linux aarch64
* WIP jenkins pipeline: funcfiftlib compilation fails that 16mb mem is not enough, increase to 32mb
* WIP jenkins pipeline: enable test in nix build
* WIP jenkins pipeline: add linux x86-64 nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include libs in nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: include mac nix build
* WIP jenkins pipeline: nix linux arm64 with openssl 1.1 for now
* WIP jenkins pipeline: working ubuntu arm64 libtonjson
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix
* WIP jenkins pipeline: working ubuntu arm64 libtonjson + minor fix 2
* WIP jenkins pipeline: merry christmas
* WIP jenkins pipeline: merry christmas 2
* WIP jenkins pipeline: remove native static builds
* WIP jenkins pipeline: enable more tests
* WIP jenkins pipeline: zip artifacts better
* WIP jenkins pipeline: get rid of path in the final zip
* WIP jenkins pipeline: minor fix, include lib and smartcont folders
* WIP jenkins pipeline: minor fix, include lib and smartcont folders into nix artifacts also
* WIP jenkins pipeline: minor fix
* WIP jenkins pipeline: minor fix
* adjust github actions for new nix builds
* cleanup
* cleanup
* cleanup
* cleanup
* rename libtonlibjson.so.0.5 to libtonlibjson.so
* Add TON build instructions to README.md
* simplify
* fix test-tonlib-offline
* set timeout per test of 300 sec
* set timeout per test of 600 sec for non nix builds
* increase test timeout to 900 sec; minor changes
* use MS VS 2022 for win TON compilation; update README.md
* use MS VS 2022 for win TON compilation; update README.md
* change path to MSVC in github workflow
* change path to MSVC in groovy pipeline
* compile ton on win, with msvc 2022 community and enterprise versions
* minor fixes
* improve network tests
* remove TON compilation against macos-11 github runner
* add `choco feature enable -n allowEmptyChecksums` since pkg-config-lite-0.28-1 does not have a checksum
* abort win compilation if 3pp can't be downloaded
* increase test timeout to 30 min
* improving test-catchain
2024-01-15 20:48:04 +00:00
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
```
2025-01-21 08:27:25 +00:00
### TON portable binaries
Linux portable binaries are wrapped into AppImages, at the same time MacOS portable binaries are statically linked executables.
Linux and MacOS binaries are available for both x86-64 and arm64 architectures.
2023-11-03 11:43:34 +00:00
## Running tests
2024-03-06 14:15:49 +00:00
Tests are executed by running `ctest` in the build directory. See `doc/Tests.md` for more information.