Skip to content

Commit 4ebd741

Browse files
authored
Merge pull request #1828 from ton-blockchain/testnet
Merge develope branch
2 parents 05bea13 + 34823b1 commit 4ebd741

File tree

113 files changed

+4304
-1848
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

113 files changed

+4304
-1848
lines changed

.github/workflows/create-tolk-release.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ on:
99

1010
permissions: write-all
1111

12+
env:
13+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
14+
1215
jobs:
1316
create-release:
1417
runs-on: ubuntu-22.04
@@ -152,3 +155,11 @@ jobs:
152155
asset_name: ton-wasm.zip
153156
tag: ${{ inputs.tag }}
154157

158+
- name: Upload stdlib
159+
run: |
160+
mkdir smartcont_lib
161+
cd smartcont_lib
162+
cp -r ../artifacts/ton-x86_64-linux/{smartcont,lib} .
163+
zip -r smartcont_lib.zip .
164+
gh release upload ${{ inputs.tag }} smartcont_lib.zip
165+

Changelog.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,15 @@
1+
## 2025.10 Update
2+
3+
1. [TVM version v12](./doc/GlobalVersions.md): full bounces, new `BTOS` and `HASHBU` instuctions, limit on contract size in masterchain.
4+
2. Optimistic collation/validation: allow nodes to generate and check block candidates before previous block is fully signed (not fully activated yet).
5+
3. Introduced custom block compression algorithm.
6+
4. Overlay improvements: improved overlay discovery on shard configuration update, private externals in custom overlays.
7+
5. Various improvements: session stats, telemetry in fast-sync overlay, earlier block broadcasts, limiting ttl for values in DHT, fixing search by utime in native blockexplorer, faster downloading candidates in validator session, parallelization of storing to cell_db, avoiding touching packfiles on startup.
8+
9+
Besides the work of the core team, this update is based on the efforts of the Tonstudio team: @hacker-volodya @Shvandre; and @mkiesel (avoiding touching packfiles on startup).
10+
11+
12+
113
## 2025.07 Accelerator Update
214

315
Separation of validation and collation processes that allows to host them on independent machines and achieve full horizontal scaling. [More details in documentation](https://docs.ton.org/v3/documentation/infra/nodes/validation/collators)

adnl/adnl-ext-client.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ void AdnlExtClientImpl::alarm() {
3131
next_create_at_ = td::Timestamp::in(10.0);
3232
alarm_timestamp() = next_create_at_;
3333

34+
if (!dst_host_.empty()) {
35+
auto S = dst_addr_.init_host_port(dst_host_);
36+
if (S.is_error()) {
37+
LOG(INFO) << "failed to connect to " << dst_host_ << ": " << S;
38+
return;
39+
}
40+
LOG(DEBUG) << "resolved " << dst_host_ << " -> " << dst_addr_;
41+
}
3442
auto fd = td::SocketFd::open(dst_addr_);
3543
if (fd.is_error()) {
3644
LOG(INFO) << "failed to connect to " << dst_addr_ << ": " << fd.move_as_error();
@@ -166,6 +174,12 @@ td::actor::ActorOwn<AdnlExtClient> AdnlExtClient::create(AdnlNodeIdFull dst, td:
166174
return td::actor::create_actor<AdnlExtClientImpl>("extclient", std::move(dst), dst_addr, std::move(callback));
167175
}
168176

177+
td::actor::ActorOwn<AdnlExtClient> AdnlExtClient::create(AdnlNodeIdFull dst, std::string dst_host,
178+
std::unique_ptr<AdnlExtClient::Callback> callback) {
179+
return td::actor::create_actor<AdnlExtClientImpl>("extclient", std::move(dst), std::move(dst_host),
180+
std::move(callback));
181+
}
182+
169183
td::actor::ActorOwn<AdnlExtClient> AdnlExtClient::create(AdnlNodeIdFull dst, PrivateKey local_id,
170184
td::IPAddress dst_addr,
171185
std::unique_ptr<AdnlExtClient::Callback> callback) {

adnl/adnl-ext-client.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ class AdnlExtClient : public td::actor::Actor {
3939
td::Promise<td::BufferSlice> promise) = 0;
4040
static td::actor::ActorOwn<AdnlExtClient> create(AdnlNodeIdFull dst, td::IPAddress dst_addr,
4141
std::unique_ptr<AdnlExtClient::Callback> callback);
42+
static td::actor::ActorOwn<AdnlExtClient> create(AdnlNodeIdFull dst, std::string dst_host,
43+
std::unique_ptr<AdnlExtClient::Callback> callback);
4244
static td::actor::ActorOwn<AdnlExtClient> create(AdnlNodeIdFull dst, PrivateKey local_id, td::IPAddress dst_addr,
4345
std::unique_ptr<AdnlExtClient::Callback> callback);
4446
};

adnl/adnl-ext-client.hpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,9 @@ class AdnlExtClientImpl : public AdnlExtClient {
7171
AdnlExtClientImpl(AdnlNodeIdFull dst_id, td::IPAddress dst_addr, std::unique_ptr<Callback> callback)
7272
: dst_(std::move(dst_id)), dst_addr_(dst_addr), callback_(std::move(callback)) {
7373
}
74+
AdnlExtClientImpl(AdnlNodeIdFull dst_id, std::string dst_host, std::unique_ptr<Callback> callback)
75+
: dst_(std::move(dst_id)), dst_host_(std::move(dst_host)), callback_(std::move(callback)) {
76+
}
7477
AdnlExtClientImpl(AdnlNodeIdFull dst_id, PrivateKey local_id, td::IPAddress dst_addr,
7578
std::unique_ptr<Callback> callback)
7679
: dst_(std::move(dst_id)), local_id_(local_id), dst_addr_(dst_addr), callback_(std::move(callback)) {
@@ -133,6 +136,7 @@ class AdnlExtClientImpl : public AdnlExtClient {
133136
AdnlNodeIdFull dst_;
134137
PrivateKey local_id_;
135138
td::IPAddress dst_addr_;
139+
std::string dst_host_;
136140

137141
std::unique_ptr<Callback> callback_;
138142

blockchain-explorer/blockchain-explorer-query.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -525,8 +525,8 @@ HttpQueryBlockSearch::HttpQueryBlockSearch(std::map<std::string, std::string> op
525525
}
526526
if (opts.count("utime") == 1) {
527527
try {
528-
seqno_ = static_cast<td::uint32>(std::stoull(opts["utime"]));
529-
mode_ = 1;
528+
utime_ = static_cast<td::uint32>(std::stoull(opts["utime"]));
529+
mode_ = 4;
530530
} catch (...) {
531531
error_ = td::Status::Error("cannot parse utime");
532532
return;
@@ -1429,10 +1429,10 @@ void HttpQueryStatus::finish_query() {
14291429
A << "<td>" << static_cast<td::int32>(x->ts_.at_unix()) << "</td>";
14301430
}
14311431
A << "</tr>\n";
1432-
for (td::uint32 i = 0; i < results_.ips.size(); i++) {
1432+
for (td::uint32 i = 0; i < results_.addrs.size(); i++) {
14331433
A << "<tr>";
1434-
if (results_.ips[i].is_valid()) {
1435-
A << "<td>" << results_.ips[i].get_ip_str() << ":" << results_.ips[i].get_port() << "</td>";
1434+
if (!results_.addrs[i].empty()) {
1435+
A << "<td>" << results_.addrs[i] << "</td>";
14361436
} else {
14371437
A << "<td>hidden</td>";
14381438
}

blockchain-explorer/blockchain-explorer.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ class CoreActor : public CoreActorInterface {
187187
std::mutex queue_mutex_;
188188
std::mutex res_mutex_;
189189
std::map<td::int32, std::shared_ptr<RemoteNodeStatus>> results_;
190-
std::vector<td::IPAddress> addrs_;
190+
std::vector<std::string> addrs_;
191191
static CoreActor* instance_;
192192
td::actor::ActorId<CoreActor> self_id_;
193193

@@ -220,7 +220,7 @@ class CoreActor : public CoreActorInterface {
220220
}
221221
void get_results(td::uint32 max, td::Promise<RemoteNodeStatusList> promise) override {
222222
RemoteNodeStatusList r;
223-
r.ips = hide_ips_ ? std::vector<td::IPAddress>{addrs_.size()} : addrs_;
223+
r.addrs = hide_ips_ ? std::vector<std::string>{addrs_.size()} : addrs_;
224224
auto it = results_.rbegin();
225225
while (it != results_.rend() && r.results.size() < max) {
226226
r.results.push_back(it->second);
@@ -445,14 +445,14 @@ class CoreActor : public CoreActorInterface {
445445
r_servers.ensure();
446446
servers = r_servers.move_as_ok();
447447
for (const auto& serv : servers) {
448-
addrs_.push_back(serv.addr);
448+
addrs_.push_back(serv.hostname);
449449
}
450450
} else {
451451
if (!remote_addr_.is_valid()) {
452452
LOG(FATAL) << "remote addr not set";
453453
}
454-
addrs_.push_back(remote_addr_);
455454
servers.push_back(liteclient::LiteServerConfig{ton::adnl::AdnlNodeIdFull{remote_public_key_}, remote_addr_});
455+
addrs_.push_back(servers.back().hostname);
456456
}
457457
n_servers_ = servers.size();
458458
client_ = liteclient::ExtClient::create(std::move(servers), make_callback(), true);

blockchain-explorer/blockchain-explorer.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ class CoreActorInterface : public td::actor::Actor {
5959
};
6060

6161
struct RemoteNodeStatusList {
62-
std::vector<td::IPAddress> ips;
62+
std::vector<std::string> addrs;
6363
std::vector<std::shared_ptr<RemoteNodeStatus>> results;
6464
};
6565
virtual ~CoreActorInterface() = default;

common/global-version.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@
1919
namespace ton {
2020

2121
// See doc/GlobalVersions.md
22-
constexpr int SUPPORTED_VERSION = 11;
22+
constexpr int SUPPORTED_VERSION = 12;
2323

2424
}

create-hardfork/create-hardfork.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,6 @@ class HardforkCreator : public td::actor::Actor {
280280

281281
void new_key_block(ton::validator::BlockHandle handle) override {
282282
}
283-
void send_validator_telemetry(ton::PublicKeyHash key,
284-
ton::tl_object_ptr<ton::ton_api::validator_telemetry> telemetry) override {
285-
}
286283
};
287284

288285
td::actor::send_closure(validator_manager_, &ton::validator::ValidatorManagerInterface::install_callback,

0 commit comments

Comments
 (0)