mirror of
https://github.com/ton-blockchain/ton
synced 2025-02-13 03:32:22 +00:00
* 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
151 lines
No EOL
6.5 KiB
Markdown
151 lines
No EOL
6.5 KiB
Markdown
<div align="center">
|
|
<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>
|
|
<h3>Reference implementation of TON Node and tools</h3>
|
|
<hr/>
|
|
</div>
|
|
|
|
##
|
|
[![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. |