Skip to content

Commit

Permalink
Merge pull request #13 from disintar/dev
Browse files Browse the repository at this point in the history
Up to date with testnet
  • Loading branch information
tvorogme authored Jan 9, 2024
2 parents e0ed7e8 + cd5f03b commit c5bcef9
Show file tree
Hide file tree
Showing 216 changed files with 6,559 additions and 4,952 deletions.
2 changes: 1 addition & 1 deletion .clang_complete
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-xc++
-std=c++14
-std=c++17
-iquote .
-iquote tdtl/
-iquote tl/
Expand Down
35 changes: 29 additions & 6 deletions .github/script/fift-func-wasm-build-ubuntu.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
# dependencies:
#sudo apt-get install -y build-essential git make cmake clang libgflags-dev zlib1g-dev libssl-dev libreadline-dev libmicrohttpd-dev pkg-config libgsl-dev python3 python3-dev python3-pip nodejs libevent-dev

export CC=$(which clang)
export CXX=$(which clang++)
export CC=$(which clang-16)
export CXX=$(which clang++-16)
export CCACHE_DISABLE=1

cd ../..
Expand All @@ -13,7 +13,7 @@ echo `pwd`

git clone https://github.com/openssl/openssl.git
cd openssl
git checkout OpenSSL_1_1_1j
git checkout checkout openssl-3.1.4
./config
make -j16
OPENSSL_DIR=`pwd`
Expand All @@ -37,7 +37,15 @@ cd ..

mkdir build
cd build
cmake -GNinja -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.so -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.so -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.so -DTON_USE_ABSEIL=OFF ..
cmake -GNinja -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_STANDARD=17 \
-DZLIB_LIBRARY=/usr/lib/x86_64-linux-gnu/libz.so \
-DZLIB_INCLUDE_DIR=$ZLIB_DIR \
-DOPENSSL_ROOT_DIR=$OPENSSL_DIR \
-DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include \
-DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.so \
-DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.so \
-DTON_USE_ABSEIL=OFF ..

test $? -eq 0 || { echo "Can't configure TON build"; exit 1; }

Expand Down Expand Up @@ -92,8 +100,23 @@ test $? -eq 0 || { echo "Can't compile libsodium with emmake "; exit 1; }

cd ../build

emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release -DZLIB_LIBRARY=$ZLIB_DIR/libz.a -DZLIB_INCLUDE_DIR=$ZLIB_DIR -DOPENSSL_ROOT_DIR=$OPENSSL_DIR -DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include -DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a -DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a -DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake -DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" -DSECP256K1_INCLUDE_DIR=$SECP256K1_DIR/include -DSECP256K1_LIBRARY=$SECP256K1_DIR/.libs/libsecp256k1.a -DSODIUM_INCLUDE_DIR=$SODIUM_DIR/src/libsodium/include -DSODIUM_LIBRARY_RELEASE=$SODIUM_DIR/src/libsodium/.libs/libsodium.a -DSODIUM_LIBRARY_DEBUG=$SODIUM_DIR/src/libsodium/.libs/libsodium.a -DSODIUM_USE_STATIC_LIBS=ON ..
test $? -eq 0 || { echo "Can't configure TON with with emmake "; exit 1; }
emcmake cmake -DUSE_EMSCRIPTEN=ON -DCMAKE_BUILD_TYPE=Release \
-DZLIB_LIBRARY=$ZLIB_DIR/libz.a \
-DZLIB_INCLUDE_DIR=$ZLIB_DIR \
-DOPENSSL_ROOT_DIR=$OPENSSL_DIR \
-DOPENSSL_INCLUDE_DIR=$OPENSSL_DIR/include \
-DOPENSSL_CRYPTO_LIBRARY=$OPENSSL_DIR/libcrypto.a \
-DOPENSSL_SSL_LIBRARY=$OPENSSL_DIR/libssl.a \
-DCMAKE_TOOLCHAIN_FILE=$EMSDK_DIR/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake \
-DCMAKE_CXX_FLAGS="-sUSE_ZLIB=1" \
-DSECP256K1_INCLUDE_DIR=$SECP256K1_DIR/include \
-DSECP256K1_LIBRARY=$SECP256K1_DIR/.libs/libsecp256k1.a \
-DSODIUM_INCLUDE_DIR=$SODIUM_DIR/src/libsodium/include \
-DSODIUM_LIBRARY_RELEASE=$SODIUM_DIR/src/libsodium/.libs/libsodium.a \
-DSODIUM_LIBRARY_DEBUG=$SODIUM_DIR/src/libsodium/.libs/libsodium.a \
-DSODIUM_USE_STATIC_LIBS=ON ..

test $? -eq 0 || { echo "Can't configure TON with emmake "; exit 1; }
cp -R ../crypto/smartcont ../crypto/fift/lib crypto

emmake make -j16 funcfiftlib func fift tlbc emulator-emscripten
74 changes: 74 additions & 0 deletions .github/workflows/ton-x86_64-linux-python-dev.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name: "DEV tvm-python x86_64 Linux"

on:
push:
branches: [ dev ]
pull_request:
branches: [ dev ]
workflow_dispatch:
workflow_call:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build39: # Fast deploy to dev
strategy:
matrix:
python: [ 39 ]
runs-on: [ self-hosted, Linux, X64 ]

steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'

- uses: cachix/install-nix-action@v22
with:
extra_nix_config: |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
env:
USER: runner

- uses: cachix/cachix-action@v12
with:
name: disintar
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
env:
USER: runner

- run: |
export KERNEL=$(nix eval --raw 'nixpkgs#hostPlatform.parsed.kernel.name')
echo "TARGET_SYSTEM=x86_64-$KERNEL" >> $GITHUB_ENV
echo "RELEASE_NAME=ton-cpython-${{ matrix.python }}-x86_64-$KERNEL" >> $GITHUB_ENV
- name: Compile
run: nix build .?submodules=1#packages.x86_64-linux.ton-python-${{ matrix.python }}
--print-build-logs --system x86_64-linux -o result-x86_64

- name: Copy binaries
run: |
ls -lart
mkdir artifacts
cp $PWD/result-x86_64/lib/* artifacts/
- name: Simple binaries test
run: nix develop .#packages.x86_64-linux.ton-python-${{ matrix.python }}
-c bash -c "cd artifacts; python3 -c 'import python_ton'"

- name: Upload artifacts
uses: actions/upload-artifact@master
with:
name: ${{ env.RELEASE_NAME }}
path: artifacts

- name: Upload artifacts
uses: workflow/[email protected]
with:
flakes: nixpkgs#gh
script: |
gh release delete -y "$RELEASE_NAME" || true
gh release create --notes "" "$RELEASE_NAME" artifacts/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
70 changes: 8 additions & 62 deletions .github/workflows/ton-x86_64-linux-python.yml
Original file line number Diff line number Diff line change
@@ -1,76 +1,22 @@
name: "tvm-python x86_64 Linux"

on: [push,workflow_dispatch,workflow_call]
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
workflow_call:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build39: # Fast deploy to dev
strategy:
matrix:
python: [39]
runs-on: [self-hosted, Linux, X64]

steps:
- uses: actions/checkout@v3
with:
submodules: 'recursive'

- uses: cachix/install-nix-action@v22
with:
extra_nix_config: |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
env:
USER: runner

- uses: cachix/cachix-action@v12
with:
name: disintar
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
env:
USER: runner

- run: |
export KERNEL=$(nix eval --raw 'nixpkgs#hostPlatform.parsed.kernel.name')
echo "TARGET_SYSTEM=x86_64-$KERNEL" >> $GITHUB_ENV
echo "RELEASE_NAME=ton-cpython-${{ matrix.python }}-x86_64-$KERNEL" >> $GITHUB_ENV
- name: Compile
run: nix build .?submodules=1#packages.x86_64-linux.ton-python-${{ matrix.python }}
--print-build-logs --system x86_64-linux -o result-x86_64

- name: Copy binaries
run: |
ls -lart
mkdir artifacts
cp $PWD/result-x86_64/lib/* artifacts/
- name: Simple binaries test
run: nix develop .#packages.x86_64-linux.ton-python-${{ matrix.python }}
-c bash -c "cd artifacts; python3 -c 'import python_ton'"

- name: Upload artifacts
uses: actions/upload-artifact@master
with:
name: ${{ env.RELEASE_NAME }}
path: artifacts

- name: Upload artifacts
uses: workflow/[email protected]
with:
flakes: nixpkgs#gh
script: |
gh release delete -y "$RELEASE_NAME" || true
gh release create --notes "" "$RELEASE_NAME" artifacts/*
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

build:
strategy:
matrix:
python: [310, 311]
python: [39, 310, 311]
runs-on: [self-hosted, Linux, X64]
needs:
- build39
Expand Down
8 changes: 7 additions & 1 deletion .github/workflows/win-2019-compile.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
name: Windows Server 2019 x64 Compile

on: [ push,workflow_dispatch,workflow_call ]
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
workflow_dispatch:
workflow_call:

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
Expand Down
67 changes: 50 additions & 17 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1 FATAL_ERROR)
cmake_minimum_required(VERSION 3.5 FATAL_ERROR)

# C++17 requires macOS 10.14+
# https://bugs.chromium.org/p/chromium/issues/detail?id=1274388
Expand Down Expand Up @@ -85,7 +85,7 @@ else()
set(HAVE_SSE42 FALSE)
endif()

set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
set(CMAKE_CXX_EXTENSIONS FALSE)

Expand Down Expand Up @@ -262,6 +262,9 @@ if (MSVC)
add_definitions(-D_SCL_SECURE_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /W4 /wd4100 /wd4127 /wd4324 /wd4456 /wd4457 /wd4458 /wd4505 /wd4702")
elseif (CLANG OR GCC)
if (GCC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstrong-eval-order=some")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer")
if (APPLE)
#use "-Wl,-exported_symbols_list,${CMAKE_CURRENT_SOURCE_DIR}/export_list" for exported symbols
Expand Down Expand Up @@ -469,6 +472,10 @@ target_link_libraries(test-smartcont PRIVATE smc-envelope fift-lib ton_db)
add_executable(test-bigint ${BIGINT_TEST_SOURCE})
target_link_libraries(test-bigint PRIVATE ton_crypto)

if (WINGETOPT_FOUND)
target_link_libraries_system(test-bigint wingetopt)
endif()

add_executable(test-cells test/test-td-main.cpp ${CELLS_TEST_SOURCE})
target_link_libraries(test-cells PRIVATE ton_crypto)

Expand Down Expand Up @@ -535,26 +542,12 @@ target_link_libraries(test-rldp2 adnl adnltest dht rldp2 tl_api)
add_executable(test-validator-session-state test/test-validator-session-state.cpp)
target_link_libraries(test-validator-session-state adnl dht rldp validatorsession tl_api)

#add_executable(test-node test/test-node.cpp)
#target_link_libraries(test-node overlay tdutils tdactor adnl tl_api dht
# catchain validatorsession)

add_executable(test-catchain test/test-catchain.cpp)
target_link_libraries(test-catchain overlay tdutils tdactor adnl adnltest rldp tl_api dht
catchain )
#add_executable(test-validator-session test/test-validator-session.cpp)
#target_link_libraries(test-validator-session overlay tdutils tdactor adnl tl_api dht
# catchain validatorsession)
add_executable(test-ton-collator test/test-ton-collator.cpp)
target_link_libraries(test-ton-collator overlay tdutils tdactor adnl tl_api dht
catchain validatorsession validator-disk ton_validator validator-disk )
#add_executable(test-validator test/test-validator.cpp)
#target_link_libraries(test-validator overlay tdutils tdactor adnl tl_api dht
# rldp catchain validatorsession ton-node validator ton_validator validator memprof ${JEMALLOC_LIBRARIES})
#add_executable(test-ext-server test/test-ext-server.cpp)
#target_link_libraries(test-ext-server tdutils tdactor adnl tl_api dht )
#add_executable(test-ext-client test/test-ext-client.cpp)
#target_link_libraries(test-ext-client tdutils tdactor adnl tl_api tl-lite-utils)

add_executable(test-http test/test-http.cpp)
target_link_libraries(test-http PRIVATE tonhttp)
Expand Down Expand Up @@ -596,13 +589,53 @@ add_test(test-tdutils test-tdutils)
add_test(test-tonlib-offline test-tonlib-offline)
#END tonlib

# FunC tests
if (NOT NIX)
if (MSVC)
set(PYTHON_VER "python")
else()
set(PYTHON_VER "python3")
endif()
add_test(
NAME test-func
COMMAND ${PYTHON_VER} run_tests.py tests/
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/crypto/func/auto-tests)
if (WIN32)
set_property(TEST test-func PROPERTY ENVIRONMENT
"FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/Release/func.exe"
"FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/Release/fift.exe"
"FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/")
else()
set_property(TEST test-func PROPERTY ENVIRONMENT
"FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/func"
"FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/fift"
"FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/")
endif()

add_test(
NAME test-func-legacy
COMMAND ${PYTHON_VER} legacy_tester.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/crypto/func/auto-tests)
if (WIN32)
set_property(TEST test-func-legacy PROPERTY ENVIRONMENT
"FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/Release/func.exe"
"FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/Release/fift.exe"
"FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/")
else()
set_property(TEST test-func-legacy PROPERTY ENVIRONMENT
"FUNC_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/func"
"FIFT_EXECUTABLE=${CMAKE_CURRENT_BINARY_DIR}/crypto/fift"
"FIFTPATH=${CMAKE_CURRENT_SOURCE_DIR}/crypto/fift/lib/")
endif()
endif()

#BEGIN internal
if (NOT TON_ONLY_TONLIB)
add_test(test-adnl test-adnl)
add_test(test-dht test-dht)
add_test(test-rldp test-rldp)
add_test(test-rldp2 test-rldp2)
#add_test(test-validator-session-state test-validator-session-state)
add_test(test-validator-session-state test-validator-session-state)
add_test(test-catchain test-catchain)

add_test(test-fec test-fec)
Expand Down
23 changes: 23 additions & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,26 @@
##2023.11 Update

1. New TVM Functionality. (Disabled by default)
2. A series of emulator improvements: libraries support, higher max stack size, etc
3. A series of tonlib and tonlib-cli improvements: wallet-v4 support, getconfig, showtransactions, etc
4. Changes to public libraries: now contract can not publish more than 256 libraries (config parameter) and contracts can not be deployed with public libraries in initstate (instead contracts need explicitly publish all libraries)
5. Changes to storage due payment: now due payment is collected in Storage Phase, however for bouncable messages fee amount can not exceed balance of account prior to message.


Besides the work of the core team, this update is based on the efforts of @aleksej-paschenko (emulator improvements), @akifoq (security improvements), Trail of Bits auditor as well as all participants of [TEP-88 discussion](https://github.com/ton-blockchain/TEPs/pull/88).

## 2023.10 Update
1. A series of additional security checks in node: special cells in action list, init state in external messages, peers data prior to saving to disk.
2. Human-readable timestamps in explorer

Besides the work of the core team, this update is based on the efforts of @akifoq and @mr-tron.

## 2023.06 Update
1. (disabled by default) New deflation mechanisms: partial fee burning and blackhole address
2. Storage-contract improvement

Besides the work of the core team, this update is based on the efforts of @DearJohnDoe from Tonbyte (Storage-contract improvement).

## 2023.05 Update
1. Archive manager optimization
2. A series of catchain (basic consensus protocol) security improvements
Expand Down
Loading

0 comments on commit c5bcef9

Please sign in to comment.