Тесты QNS

Реальные замеры сети: пропускная способность с постквантовыми подписями, синхронизация узла с нуля, сеть между узлами, отклик RPC, нейроконтроллер, тайминг блоков, диск. Для каждого теста — что делали, что получили и настоящий лог.

Замеры 13–14 сентября 2026

Скачать PDF (RU)Download PDF (EN)Сырые логи (ZIP)

Ключевые цифры

ПоказательЗначениеПримечание
Пик TPS с постквантовыми подписями (Ed25519 + Dilithium3)14 469 TPSстенд 14.09, блок 43 408 tx
Пик TPS на живом testnet (13.09)14 151 TPSблок 42 452 tx
Устойчивая пропускная способность (13.09)~10 000 TPS200 000 tx за 20,0 с
Пик TPS без Dilithium (только Ed25519)38 310 TPSблок 114 929 tx
Синхронизация нового узла с нуля~1 сдо высоты 919 626, снимок состояния
Отставание узла на ПК от прода0 блоков20 замеров за минуту
Отклик RPC через интернет0,05–0,16 слокально 0,00–0,06 с
Потери транзакций и сбои консенсуса0во всех прогонах (13.09: 1 280 000 tx)
Размер транзакции в мемпуле3 509 Бпостквантовая; простая — 230 Б
Диск боевого узла17 ГБна 919 000 блоков, с прунингом

1. TPS с постквантовыми подписями (Ed25519 + Dilithium3)

Что делали

Каждая транзакция QNS подписана двумя ключами сразу: классическим Ed25519 и постквантовым Dilithium3. Каждый валидатор проверяет обе подписи у каждой транзакции — ничего не пропускается «на доверии».

Клиент нагрузки tps_load заранее подписывает десятки тысяч переводов и отправляет их пачками по JSON-RPC (256 соединений, пачка 128). Дальше мы смотрим: сколько транзакций узел принял в мемпул, за сколько блоков они вошли в цепь, сколько транзакций поместилось в самый большой блок и сколько это в пересчёте на секунду (TPS = транзакций в блоке ÷ 3 с, слот блока).

Прогоны 14.09 — на стенде-копии прода (тот же сервер, 15 валидаторов, копия живой цепи на высоте ~896 000, бинарь be3406e). Прогоны 13.09 — на живом testnet до включения регистра ключей (транзакция тогда весила 5 501 Б).

Что получили

14 469
пик TPS, стенд 14.09
14 151
пик TPS, живой testnet 13.09
~10 000
устойчиво: 200 000 tx за 20 с
0
потерь и сбоев консенсуса

Стенд 14.09 (с регистром ключей, транзакция 3 509 Б)

ПрогонПринято txБлоки (tx)Пик TPSСреднее TPSПриём в мемпулПик CPU
01-20k (2 000 × 10)20 0001 428 / 14 285 / 4 2874 7622 22236 292 tx/с5,1 ядра
02-60k (2 058 × 10)20 58020 5806 8606 86033 971 tx/с5,9 ядра
03-200k (2 058 × 20)41 16041 16013 72013 72036 437 tx/с9,7 ядра
04-120k (2 058 × 60)123 4801 428 / 14 285 / 43 408 / 42 701 / 21 65814 4698 23227 088 tx/с15,7 ядра

Живой testnet 13.09 (до регистра ключей, транзакция 5 501 Б)

ПрогонПринято txПриём в мемпулБлоки с txПик в блокеПик TPSПримечание
01-20k20 00037 474 tx/с120 0006 667всплеск, в итогах не учитывается
02-60k60 00029 499 tx/с241 22913 743
03-200k200 00030 800 tx/с742 45214 151200 000 tx за 20 с ≈ 10 000 TPS устойчиво
04-400k400 00018 542 tx/с2037 56712 522
05-200k-control200 00031 225 tx/с590 12330 041*первый блок без бюджета времени (~9 с)
06-400k-sustained400 00037 121 tx/с1537 39012 4630 EQUIVOCATION, ~7 570 TPS устойчиво

* Блок 90 123 tx 13.09 собрался сразу после перезапуска узла, когда бюджет времени ещё не был измерен, и обрабатывался ~9 с — это не честный «3-секундный» TPS, поэтому пиком считаем 14 151.

Первые блоки каждой серии — ровно 1 428 tx: базовый лимит газа блока 30 000 000 (21 000 на перевод). Нейроконтроллер видит нагрузку и в следующих блоках поднимает лимит вплоть до 3 000 000 000.

На стенде 14.09 кран успел пополнить только 2 058 из 20 000 кошельков, поэтому серии 60k и 200k дали 20 580 и 41 160 принятых транзакций (2 058 отправителей × 10 и × 20). Серия 04-120k специально построена на этих 2 058 кошельках (× 60) и дала пик 14 469 TPS.

Приём в мемпул 27 000–36 400 tx/с — это скорость, с которой узел успевает проверить обе подписи и принять транзакцию по RPC.

Лог

Пополнение кошельков краном (14.09)2026-09-14/dilithium/00-fund.txt
== пополнение краном 20000 кошельков Dilithium 14:08:20
кран: пополнено 2058 из 20000 за 71 с
Прогон 01-20k (14.09)2026-09-14/dilithium/01-20k.txt
=== Прогон 01-20k: 2000 отправителей × 10 транзакций = 20000 ===
Начало: 2026-09-14 18:09:52 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdac43"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4844530476,"enabled":true,"head":896067,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":832000}}
База на диске до: 18G
отправителей 2000, по 10, соединений 256, пачка 128
подписано 20000 за 1.093084053s (24 потоков)
отправлено за 0.55 с → приём 36292 tx/с; принято 20000, ошибок 0
в блоках 20000 из 20000
пик 14285 в блоке → 4762 TPS; в среднем 2222 TPS за 3 блоков по 3 с
по блокам: [1428, 14285, 4287]
Конец: 2026-09-14 18:10:09 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdac49"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4909364948,"enabled":true,"head":896073,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":844000}}
База на диске после: 18G
Пик мемпула: "transactions":20000
Размер транзакции в мемпуле: "avgTxBytes":5501
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 18:09:58 узел 505% ядра
01-20k — загрузка процессора2026-09-14/dilithium/01-20k-cpu.txt
18:09:54 узел 46% ядра
18:09:56 узел 74% ядра
18:09:58 узел 505% ядра
18:10:00 узел 89% ядра
18:10:02 узел 160% ядра
18:10:04 узел 105% ядра
18:10:06 узел 56% ядра
01-20k — мемпул посекундно2026-09-14/dilithium/01-20k-mempool.txt
18:09:52.407 h=0xdac43 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:09:53.425 h=0xdac44 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:09:54.445 h=0xdac44 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:09:55.464 h=0xdac44 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:09:56.487 h=0xdac45 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:09:57.527 h=0xdac45 "avgTxBytes":5501 "memoryBytes":97125656 "transactions":17656 
18:09:58.744 h=0xdac45 "avgTxBytes":5501 "memoryBytes":110020000 "transactions":20000 
18:09:59.764 h=0xdac46 "avgTxBytes":5501 "memoryBytes":102164572 "transactions":18572 
18:10:00.786 h=0xdac46 "avgTxBytes":5501 "memoryBytes":102164572 "transactions":18572 
18:10:01.805 h=0xdac46 "avgTxBytes":5501 "memoryBytes":102164572 "transactions":18572 
18:10:02.828 h=0xdac46 "avgTxBytes":5501 "memoryBytes":102164572 "transactions":18572 
18:10:03.849 h=0xdac47 "avgTxBytes":5501 "memoryBytes":23582787 "transactions":4287 
18:10:04.869 h=0xdac47 "avgTxBytes":5501 "memoryBytes":23582787 "transactions":4287 
18:10:05.889 h=0xdac48 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
Прогон 02-60k (14.09)2026-09-14/dilithium/02-60k.txt
=== Прогон 02-60k: 6000 отправителей × 10 транзакций = 60000 ===
Начало: 2026-09-14 18:10:14 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdac4b"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4960745172,"enabled":true,"head":896075,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":848000}}
База на диске до: 18G
отправителей 2058, по 10, соединений 256, пачка 128
подписано 20580 за 1.286475785s (24 потоков)
отправлено за 0.61 с → приём 33971 tx/с; принято 20580, ошибок 0
в блоках 20580 из 20580
пик 20580 в блоке → 6860 TPS; в среднем 6860 TPS за 1 блоков по 3 с
по блокам: [20580]
Конец: 2026-09-14 18:10:24 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdac4e"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":5132696780,"enabled":true,"head":896078,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":854000}}
База на диске после: 18G
Пик мемпула: "transactions":18158
Размер транзакции в мемпуле: "avgTxBytes":3571
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 18:10:20 узел 591% ядра
02-60k — CPU2026-09-14/dilithium/02-60k-cpu.txt
18:10:16 узел 29% ядра
18:10:18 узел 66% ядра
18:10:20 узел 591% ядра
18:10:22 узел 74% ядра
02-60k — мемпул2026-09-14/dilithium/02-60k-mempool.txt
18:10:14.479 h=0xdac4b "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:15.498 h=0xdac4b "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:16.517 h=0xdac4b "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:17.540 h=0xdac4c "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:18.561 h=0xdac4c "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:19.615 h=0xdac4c "avgTxBytes":3571 "memoryBytes":64855846 "transactions":18158 
18:10:20.866 h=0xdac4d "avgTxBytes":0 "memoryBytes":0 "transactions":0 
Прогон 03-200k (14.09)2026-09-14/dilithium/03-200k.txt
=== Прогон 03-200k: 10000 отправителей × 20 транзакций = 200000 ===
Начало: 2026-09-14 18:10:29 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdac50"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":5176992739,"enabled":true,"head":896080,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":858000}}
База на диске до: 18G
отправителей 2058, по 20, соединений 256, пачка 128
подписано 41160 за 2.316816256s (24 потоков)
отправлено за 1.13 с → приём 36437 tx/с; принято 41160, ошибок 0
в блоках 41160 из 41160
пик 41160 в блоке → 13720 TPS; в среднем 13720 TPS за 1 блоков по 3 с
по блокам: [41160]
Конец: 2026-09-14 18:10:44 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdac55"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":5167413719,"enabled":true,"head":896085,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":866000}}
База на диске после: 18G
Пик мемпула: "transactions":41160
Размер транзакции в мемпуле: "avgTxBytes":3509
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 18:10:37 узел 974% ядра
03-200k — CPU2026-09-14/dilithium/03-200k-cpu.txt
18:10:31 узел 127% ядра
18:10:33 узел 119% ядра
18:10:35 узел 49% ядра
18:10:37 узел 974% ядра
18:10:39 узел 251% ядра
18:10:41 узел 110% ядра
03-200k — мемпул2026-09-14/dilithium/03-200k-mempool.txt
18:10:29.890 h=0xdac50 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:30.908 h=0xdac50 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:31.926 h=0xdac50 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:32.944 h=0xdac51 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:33.966 h=0xdac51 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:35.035 h=0xdac52 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:10:36.095 h=0xdac52 "avgTxBytes":3509 "memoryBytes":35419846 "transactions":10094 
18:10:37.259 h=0xdac52 "avgTxBytes":3509 "memoryBytes":144430440 "transactions":41160 
18:10:38.281 h=0xdac52 "avgTxBytes":3509 "memoryBytes":144430440 "transactions":41160 
18:10:39.304 h=0xdac52 "avgTxBytes":3509 "memoryBytes":144430440 "transactions":41160 
18:10:40.326 h=0xdac53 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
Прогон 04-120k (14.09) — пик 14 469 TPS2026-09-14/dilithium/04-120k.txt
=== Прогон 04-120k: 2058 отправителей × 60 транзакций = 123480 ===
Начало: 2026-09-14 18:11:19 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdac60"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":5186288087,"enabled":true,"head":896096,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":867296}}
База на диске до: 18G
отправителей 2058, по 60, соединений 256, пачка 128
подписано 123480 за 7.891633573s (24 потоков)
отправлено за 4.56 с → приём 27088 tx/с; принято 123480, ошибок 0
в блоках 123480 из 123480
пик 43408 в блоке → 14469 TPS; в среднем 8232 TPS за 5 блоков по 3 с
по блокам: [1428, 14285, 43408, 42701, 21658]
Конец: 2026-09-14 18:11:49 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdac6a"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":5721168393,"enabled":true,"head":896106,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":867306}}
База на диске после: 18G
Пик мемпула: "transactions":120915
Размер транзакции в мемпуле: "avgTxBytes":3509
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 18:11:34 узел 1571% ядра
04-120k — CPU2026-09-14/dilithium/04-120k-cpu.txt
18:11:22 узел 33% ядра
18:11:24 узел 59% ядра
18:11:26 узел 11% ядра
18:11:28 узел 2% ядра
18:11:30 узел 14% ядра
18:11:32 узел 404% ядра
18:11:34 узел 1571% ядра
18:11:36 узел 1028% ядра
18:11:38 узел 65% ядра
18:11:40 узел 269% ядра
18:11:42 узел 369% ядра
18:11:44 узел 309% ядра
18:11:46 узел 230% ядра
18:11:48 узел 31% ядра
04-120k — мемпул2026-09-14/dilithium/04-120k-mempool.txt
18:11:20.047 h=0xdac61 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:21.068 h=0xdac61 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:22.087 h=0xdac61 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:23.106 h=0xdac62 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:24.128 h=0xdac62 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:25.183 h=0xdac62 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:26.232 h=0xdac63 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:27.284 h=0xdac63 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:28.342 h=0xdac63 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:29.380 h=0xdac64 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:30.400 h=0xdac64 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:31.421 h=0xdac64 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:32.443 h=0xdac65 "avgTxBytes":3509 "memoryBytes":177509783 "transactions":50587 
18:11:34.214 h=0xdac65 "avgTxBytes":3509 "memoryBytes":330386386 "transactions":94154 
18:11:35.546 h=0xdac65 "avgTxBytes":3509 "memoryBytes":424290735 "transactions":120915 
18:11:36.878 h=0xdac66 "avgTxBytes":3509 "memoryBytes":378154403 "transactions":107767 
18:11:37.905 h=0xdac66 "avgTxBytes":3509 "memoryBytes":378154403 "transactions":107767 
18:11:38.931 h=0xdac66 "avgTxBytes":3509 "memoryBytes":378154403 "transactions":107767 
18:11:39.959 h=0xdac66 "avgTxBytes":3509 "memoryBytes":378154403 "transactions":107767 
18:11:40.989 h=0xdac67 "avgTxBytes":3509 "memoryBytes":225835731 "transactions":64359 
18:11:42.019 h=0xdac67 "avgTxBytes":3509 "memoryBytes":225835731 "transactions":64359 
18:11:43.047 h=0xdac68 "avgTxBytes":3509 "memoryBytes":75997922 "transactions":21658 
18:11:44.112 h=0xdac68 "avgTxBytes":3509 "memoryBytes":75997922 "transactions":21658 
18:11:45.412 h=0xdac69 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:11:46.437 h=0xdac69 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
Живой testnet 13.09 — 01-20k2026-09-13/raw/01-20k.txt
=== Прогон 01-20k: 20000 отправителей × 1 транзакций = 20000 ===
Начало: 2026-09-13 21:17:20 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdac3e"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":9457197187,"enabled":true,"head":896062,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":740727}}
База на диске до: 11G
отправителей 20000, по 1, соединений 256, пачка 128
подписано 20000 за 984.736311ms (24 потоков)
отправлено за 0.53 с → приём 37474 tx/с; принято 20000, ошибок 0
в блоках 20000 из 20000
пик 20000 в блоке → 6667 TPS; в среднем 6667 TPS за 1 блоков по 3 с
по блокам: [20000]
Конец: 2026-09-13 21:17:32 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdac42"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":9692925131,"enabled":true,"head":896066,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":748727}}
База на диске после: 12G
Пиковая загрузка узла: 21:17:28 узел 526% ядра
13.09 01-20k — CPU2026-09-13/raw/01-20k-cpu.txt
21:17:22 узел 45% ядра
21:17:24 узел 57% ядра
21:17:26 узел 57% ядра
21:17:28 узел 526% ядра
21:17:30 узел 90% ядра
Живой testnet 13.09 — 02-60k2026-09-13/raw/02-60k.txt
=== Прогон 02-60k: 20000 отправителей × 3 транзакций = 60000 ===
Начало: 2026-09-13 21:17:41 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdac45"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":9769471179,"enabled":true,"head":896069,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":754727}}
База на диске до: 12G
отправителей 20000, по 3, соединений 256, пачка 128
подписано 60000 за 2.912143474s (24 потоков)
отправлено за 2.03 с → приём 29499 tx/с; принято 60000, ошибок 0
в блоках 60000 из 60000
пик 41229 в блоке → 13743 TPS; в среднем 10000 TPS за 2 блоков по 3 с
по блокам: [41229, 18771]
Конец: 2026-09-13 21:18:00 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdac4b"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":10012963841,"enabled":true,"head":896075,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":764727}}
База на диске после: 13G
Пиковая загрузка узла: 21:17:51 узел 1454% ядра
13.09 02-60k — CPU2026-09-13/raw/02-60k-cpu.txt
21:17:43 узел 41% ядра
21:17:45 узел 73% ядра
21:17:47 узел 45% ядра
21:17:49 узел 56% ядра
21:17:51 узел 1454% ядра
21:17:53 узел 319% ядра
21:17:55 узел 169% ядра
21:17:57 узел 201% ядра
Живой testnet 13.09 — 03-200k (200 000 за 20 с)2026-09-13/raw/03-200k.txt
=== Прогон 03-200k: 20000 отправителей × 10 транзакций = 200000 ===
Начало: 2026-09-13 21:18:08 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdac4e"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":10090558465,"enabled":true,"head":896078,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":770727}}
База на диске до: 13G
отправителей 20000, по 10, соединений 256, пачка 128
подписано 200000 за 9.603757737s (24 потоков)
отправлено за 6.49 с → приём 30800 tx/с; принято 200000, ошибок 0
в блоках 200000 из 200000
пик 42452 в блоке → 14151 TPS; в среднем 9524 TPS за 7 блоков по 3 с
по блокам: [19391, 42452, 34900, 33530, 33721, 34777, 1229]
Конец: 2026-09-13 21:18:49 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdac5b"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":11414785055,"enabled":true,"head":896091,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":796727}}
База на диске после: 15G
Пиковая загрузка узла: 21:18:26 узел 1882% ядра
13.09 03-200k — CPU2026-09-13/raw/03-200k-cpu.txt
21:18:10 узел 41% ядра
21:18:12 узел 72% ядра
21:18:14 узел 44% ядра
21:18:16 узел 12% ядра
21:18:18 узел 12% ядра
21:18:20 узел 0% ядра
21:18:22 узел 53% ядра
21:18:24 узел 766% ядра
21:18:26 узел 1882% ядра
21:18:28 узел 964% ядра
21:18:30 узел 1477% ядра
21:18:32 узел 301% ядра
21:18:34 узел 181% ядра
21:18:36 узел 185% ядра
21:18:38 узел 196% ядра
21:18:40 узел 313% ядра
21:18:42 узел 229% ядра
21:18:44 узел 159% ядра
21:18:46 узел 184% ядра
21:18:48 узел 96% ядра
Живой testnet 13.09 — 04-400k2026-09-13/raw/04-400k.txt
=== Прогон 04-400k: 20000 отправителей × 20 транзакций = 400000 ===
Начало: 2026-09-13 21:19:00 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdac5e"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":11265107000,"enabled":true,"head":896094,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":800727}}
База на диске до: 16G
отправителей 20000, по 20, соединений 256, пачка 128
подписано 400000 за 19.582543687s (24 потоков)
отправлено за 21.57 с → приём 18542 tx/с; принято 400000, ошибок 0
в блоках 400000 из 400000
пик 37567 в блоке → 12522 TPS; в среднем 6667 TPS за 20 блоков по 3 с
по блокам: [37567, 35803, 15101, 16188, 14465, 13855, 15054, 17007, 17118, 16812, 16731, 17043, 17845, 18297, 19599, 20376, 20229, 21960, 24583, 24367]
Конец: 2026-09-13 21:20:51 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdac7d"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":13690647508,"enabled":true,"head":896125,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":847663}}
База на диске после: 20G
Пиковая загрузка узла: 21:19:30 узел 1911% ядра
13.09 04-400k — CPU2026-09-13/raw/04-400k-cpu.txt
21:19:02 узел 95% ядра
21:19:04 узел 95% ядра
21:19:06 узел 57% ядра
21:19:08 узел 26% ядра
21:19:10 узел 12% ядра
21:19:12 узел 0% ядра
21:19:14 узел 12% ядра
21:19:16 узел 14% ядра
21:19:18 узел 0% ядра
21:19:20 узел 12% ядра
21:19:22 узел 16% ядра
21:19:24 узел 0% ядра
21:19:26 узел 22% ядра
21:19:28 узел 1596% ядра
21:19:30 узел 1911% ядра
21:19:32 узел 1340% ядра
21:19:34 узел 1445% ядра
21:19:36 узел 1218% ядра
21:19:38 узел 690% ядра
21:19:40 узел 902% ядра
21:19:42 узел 322% ядра
21:19:44 узел 1534% ядра
21:19:46 узел 310% ядра
21:19:48 узел 877% ядра
21:19:50 узел 467% ядра
21:19:52 узел 273% ядра
21:19:54 узел 276% ядра
21:19:56 узел 355% ядра
21:19:58 узел 377% ядра
21:20:00 узел 156% ядра
21:20:02 узел 130% ядра
21:20:04 узел 200% ядра
21:20:06 узел 132% ядра
21:20:08 узел 143% ядра
21:20:10 узел 106% ядра
21:20:12 узел 217% ядра
21:20:14 узел 245% ядра
21:20:16 узел 243% ядра
21:20:18 узел 167% ядра
21:20:20 узел 153% ядра
21:20:22 узел 237% ядра
21:20:24 узел 248% ядра
21:20:26 узел 232% ядра
21:20:28 узел 131% ядра
21:20:30 узел 238% ядра
21:20:32 узел 251% ядра
21:20:34 узел 239% ядра
21:20:36 узел 252% ядра
21:20:38 узел 286% ядра
21:20:40 узел 257% ядра
21:20:42 узел 219% ядра
21:20:44 узел 247% ядра
21:20:46 узел 124% ядра
21:20:48 узел 145% ядра
21:20:50 узел 53% ядра
Живой testnet 13.09 — 05-200k-control2026-09-13/raw/05-200k-control.txt
=== Прогон 05-200k-control: 20000 отправителей × 10 транзакций = 200000 ===
Начало: 2026-09-13 22:01:49 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdafaa"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":13562586296,"enabled":true,"head":896938,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":868138}}
База на диске до: 13G
отправителей 20000, по 10, соединений 256, пачка 128
подписано 200000 за 9.535744553s (24 потоков)
отправлено за 6.41 с → приём 31225 tx/с; принято 200000, ошибок 0
в блоках 200000 из 200000
пик 90123 в блоке → 30041 TPS; в среднем 13333 TPS за 5 блоков по 3 с
по блокам: [90123, 37352, 35653, 35934, 938]
Конец: 2026-09-13 22:02:29 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdafb6"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":14832421041,"enabled":true,"head":896950,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":868150}}
База на диске после: 16G
Пик мемпула: "transactions":200000
Размер транзакции в мемпуле: "avgTxBytes":5501
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 22:02:07 узел 1903% ядра
13.09 05 — CPU2026-09-13/raw/05-200k-control-cpu.txt
22:01:51 узел 33% ядра
22:01:53 узел 66% ядра
22:01:55 узел 61% ядра
22:01:57 узел 12% ядра
22:01:59 узел 8% ядра
22:02:01 узел 0% ядра
22:02:03 узел 3% ядра
22:02:05 узел 207% ядра
22:02:07 узел 1903% ядра
22:02:09 узел 1164% ядра
22:02:11 узел 1734% ядра
22:02:13 узел 128% ядра
22:02:15 узел 482% ядра
22:02:17 узел 157% ядра
22:02:19 узел 59% ядра
22:02:21 узел 140% ядра
22:02:23 узел 314% ядра
22:02:25 узел 138% ядра
22:02:27 узел 59% ядра
13.09 05 — мемпул2026-09-13/raw/05-200k-control-mempool.txt
22:01:49.427 h=0xdafaa "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:50.445 h=0xdafab "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:51.464 h=0xdafab "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:52.485 h=0xdafab "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:53.506 h=0xdafac "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:54.524 h=0xdafac "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:55.544 h=0xdafad "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:56.564 h=0xdafad "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:57.622 h=0xdafad "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:58.674 h=0xdafae "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:01:59.704 h=0xdafae "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:02:00.760 h=0xdafae "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:02:01.806 h=0xdafaf "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:02:02.842 h=0xdafaf "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:02:03.862 h=0xdafaf "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:02:04.881 h=0xdafb0 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:02:05.899 h=0xdafb0 "avgTxBytes":5501 "memoryBytes":291756537 "transactions":53037 
22:02:07.624 h=0xdafb0 "avgTxBytes":5501 "memoryBytes":644112090 "transactions":117090 
22:02:10.044 h=0xdafb0 "avgTxBytes":5501 "memoryBytes":976455005 "transactions":177505 
22:02:11.794 h=0xdafb0 "avgTxBytes":5501 "memoryBytes":1100200000 "transactions":200000 
22:02:12.832 h=0xdafb0 "avgTxBytes":5501 "memoryBytes":1100200000 "transactions":200000 
22:02:13.868 h=0xdafb1 "avgTxBytes":5501 "memoryBytes":604433377 "transactions":109877 
22:02:15.531 h=0xdafb1 "avgTxBytes":5501 "memoryBytes":604433377 "transactions":109877 
22:02:16.562 h=0xdafb1 "avgTxBytes":5501 "memoryBytes":604433377 "transactions":109877 
22:02:17.594 h=0xdafb2 "avgTxBytes":5501 "memoryBytes":398960025 "transactions":72525 
22:02:18.628 h=0xdafb2 "avgTxBytes":5501 "memoryBytes":398960025 "transactions":72525 
22:02:19.661 h=0xdafb2 "avgTxBytes":5501 "memoryBytes":398960025 "transactions":72525 
22:02:20.695 h=0xdafb2 "avgTxBytes":5501 "memoryBytes":398960025 "transactions":72525 
22:02:21.731 h=0xdafb3 "avgTxBytes":5501 "memoryBytes":202832872 "transactions":36872 
22:02:22.769 h=0xdafb3 "avgTxBytes":5501 "memoryBytes":202832872 "transactions":36872 
22:02:23.799 h=0xdafb3 "avgTxBytes":5501 "memoryBytes":202832872 "transactions":36872 
22:02:24.832 h=0xdafb4 "avgTxBytes":5501 "memoryBytes":5159938 "transactions":938 
22:02:25.859 h=0xdafb5 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
Живой testnet 13.09 — 06-400k-sustained2026-09-13/raw/06-400k-sustained.txt
=== Прогон 06-400k-sustained: 20000 отправителей × 20 транзакций = 400000 ===
Начало: 2026-09-13 22:03:14 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdafc5"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":14833469617,"enabled":true,"head":896965,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":868165}}
База на диске до: 16G
отправителей 20000, по 20, соединений 256, пачка 128
подписано 400000 за 19.876507368s (24 потоков)
отправлено за 10.78 с → приём 37121 tx/с; принято 400000, ошибок 0
в блоках 400000 из 400000
пик 37390 в блоке → 12463 TPS; в среднем 8889 TPS за 15 блоков по 3 с
по блокам: [8211, 37390, 36768, 30173, 28938, 26104, 23847, 22737, 22821, 23295, 24217, 27198, 30641, 34560, 23100]
Конец: 2026-09-13 22:04:37 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdafdd"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":true,"budgetBytes":429496729600,"dbBytes":17296606757,"enabled":true,"head":896989,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":868189}}
База на диске после: 25G
Пик мемпула: "transactions":391789
Размер транзакции в мемпуле: "avgTxBytes":5501
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 22:03:48 узел 1953% ядра
13.09 06 — CPU2026-09-13/raw/06-400k-sustained-cpu.txt
22:03:16 узел 25% ядра
22:03:18 узел 67% ядра
22:03:20 узел 59% ядра
22:03:22 узел 0% ядра
22:03:24 узел 5% ядра
22:03:26 узел 4% ядра
22:03:28 узел 0% ядра
22:03:30 узел 5% ядра
22:03:32 узел 5% ядра
22:03:34 узел 1% ядра
22:03:36 узел 9% ядра
22:03:38 узел 10% ядра
22:03:40 узел 310% ядра
22:03:42 узел 1908% ядра
22:03:44 узел 1530% ядра
22:03:46 узел 1467% ядра
22:03:48 узел 1953% ядра
22:03:50 узел 1942% ядра
22:03:52 узел 428% ядра
22:03:54 узел 263% ядра
22:03:56 узел 195% ядра
22:03:58 узел 101% ядра
22:04:00 узел 131% ядра
22:04:02 узел 251% ядра
22:04:04 узел 231% ядра
22:04:06 узел 217% ядра
22:04:08 узел 230% ядра
22:04:10 узел 229% ядра
22:04:12 узел 249% ядра
22:04:14 узел 171% ядра
22:04:16 узел 137% ядра
22:04:18 узел 164% ядра
22:04:20 узел 200% ядра
22:04:22 узел 171% ядра
22:04:24 узел 262% ядра
22:04:26 узел 185% ядра
22:04:28 узел 200% ядра
22:04:30 узел 279% ядра
22:04:32 узел 226% ядра
22:04:34 узел 186% ядра
13.09 06 — мемпул2026-09-13/raw/06-400k-sustained-mempool.txt
22:03:14.417 h=0xdafc5 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:15.434 h=0xdafc5 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:16.453 h=0xdafc5 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:17.474 h=0xdafc6 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:18.493 h=0xdafc6 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:19.512 h=0xdafc6 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:20.532 h=0xdafc7 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:21.596 h=0xdafc7 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:22.646 h=0xdafc8 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:23.703 h=0xdafc8 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:24.786 h=0xdafc8 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:25.836 h=0xdafc9 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:26.890 h=0xdafc9 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:27.947 h=0xdafc9 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:28.990 h=0xdafca "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:30.035 h=0xdafca "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:31.089 h=0xdafca "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:32.148 h=0xdafcb "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:33.201 h=0xdafcb "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:34.249 h=0xdafcb "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:35.272 h=0xdafcc "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:36.290 h=0xdafcc "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:37.310 h=0xdafcc "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:38.328 h=0xdafcd "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:39.347 h=0xdafcd "avgTxBytes":0 "memoryBytes":0 "transactions":0 
22:03:40.370 h=0xdafcd "avgTxBytes":5501 "memoryBytes":180168752 "transactions":32752 
22:03:42.066 h=0xdafce "avgTxBytes":5501 "memoryBytes":489985072 "transactions":89072 
22:03:43.634 h=0xdafce "avgTxBytes":5501 "memoryBytes":870604763 "transactions":158263 
22:03:46.290 h=0xdafce "avgTxBytes":5501 "memoryBytes":1227438130 "transactions":223130 
22:03:47.810 h=0xdafce "avgTxBytes":5501 "memoryBytes":1511135702 "transactions":274702 
22:03:49.048 h=0xdafce "avgTxBytes":5501 "memoryBytes":1864574952 "transactions":338952 
22:03:50.603 h=0xdafce "avgTxBytes":5501 "memoryBytes":2140142046 "transactions":389046 
22:03:51.780 h=0xdafcf "avgTxBytes":5501 "memoryBytes":2155231289 "transactions":391789 
22:03:52.837 h=0xdafcf "avgTxBytes":5501 "memoryBytes":1949548899 "transactions":354399 
22:03:53.893 h=0xdafcf "avgTxBytes":5501 "memoryBytes":1949548899 "transactions":354399 
22:03:55.504 h=0xdafcf "avgTxBytes":5501 "memoryBytes":1949548899 "transactions":354399 
22:03:56.575 h=0xdafd0 "avgTxBytes":5501 "memoryBytes":1747288131 "transactions":317631 
22:03:57.633 h=0xdafd0 "avgTxBytes":5501 "memoryBytes":1747288131 "transactions":317631 
22:03:58.685 h=0xdafd0 "avgTxBytes":5501 "memoryBytes":1747288131 "transactions":317631 
22:03:59.746 h=0xdafd0 "avgTxBytes":5501 "memoryBytes":1747288131 "transactions":317631 
22:04:00.796 h=0xdafd0 "avgTxBytes":5501 "memoryBytes":1747288131 "transactions":317631 
22:04:01.851 h=0xdafd1 "avgTxBytes":5501 "memoryBytes":1581306458 "transactions":287458 
22:04:02.908 h=0xdafd1 "avgTxBytes":5501 "memoryBytes":1581306458 "transactions":287458 
22:04:03.961 h=0xdafd1 "avgTxBytes":5501 "memoryBytes":1581306458 "transactions":287458 
22:04:05.020 h=0xdafd2 "avgTxBytes":5501 "memoryBytes":1422118520 "transactions":258520 
22:04:06.328 h=0xdafd2 "avgTxBytes":5501 "memoryBytes":1422118520 "transactions":258520 
22:04:07.376 h=0xdafd2 "avgTxBytes":5501 "memoryBytes":1422118520 "transactions":258520 
22:04:08.420 h=0xdafd3 "avgTxBytes":5501 "memoryBytes":1278520416 "transactions":232416 
22:04:09.467 h=0xdafd3 "avgTxBytes":5501 "memoryBytes":1278520416 "transactions":232416 
22:04:10.515 h=0xdafd4 "avgTxBytes":5501 "memoryBytes":1147338069 "transactions":208569 
22:04:11.564 h=0xdafd4 "avgTxBytes":5501 "memoryBytes":1147338069 "transactions":208569 
22:04:12.616 h=0xdafd5 "avgTxBytes":5501 "memoryBytes":1022261832 "transactions":185832 
22:04:13.662 h=0xdafd5 "avgTxBytes":5501 "memoryBytes":1022261832 "transactions":185832 
22:04:15.130 h=0xdafd5 "avgTxBytes":5501 "memoryBytes":1022261832 "transactions":185832 
22:04:16.172 h=0xdafd6 "avgTxBytes":5501 "memoryBytes":896723511 "transactions":163011 
22:04:17.214 h=0xdafd6 "avgTxBytes":5501 "memoryBytes":896723511 "transactions":163011 
22:04:18.254 h=0xdafd7 "avgTxBytes":5501 "memoryBytes":768577716 "transactions":139716 
22:04:19.353 h=0xdafd7 "avgTxBytes":5501 "memoryBytes":768577716 "transactions":139716 
22:04:20.396 h=0xdafd7 "avgTxBytes":5501 "memoryBytes":768577716 "transactions":139716 
22:04:21.440 h=0xdafd8 "avgTxBytes":5501 "memoryBytes":635359999 "transactions":115499 
22:04:22.479 h=0xdafd8 "avgTxBytes":5501 "memoryBytes":635359999 "transactions":115499 
22:04:23.517 h=0xdafd8 "avgTxBytes":5501 "memoryBytes":635359999 "transactions":115499 
22:04:24.558 h=0xdafd9 "avgTxBytes":5501 "memoryBytes":485743801 "transactions":88301 
22:04:25.596 h=0xdafd9 "avgTxBytes":5501 "memoryBytes":485743801 "transactions":88301 
22:04:26.640 h=0xdafda "avgTxBytes":5501 "memoryBytes":317187660 "transactions":57660 
22:04:27.820 h=0xdafda "avgTxBytes":5501 "memoryBytes":317187660 "transactions":57660 
22:04:29.061 h=0xdafda "avgTxBytes":5501 "memoryBytes":317187660 "transactions":57660 
22:04:30.105 h=0xdafdb "avgTxBytes":5501 "memoryBytes":127073100 "transactions":23100 
22:04:31.146 h=0xdafdb "avgTxBytes":5501 "memoryBytes":127073100 "transactions":23100 
22:04:32.179 h=0xdafdb "avgTxBytes":5501 "memoryBytes":127073100 "transactions":23100 
22:04:33.212 h=0xdafdc "avgTxBytes":0 "memoryBytes":0 "transactions":0 

2. TPS без Dilithium (простые подписи Ed25519) и сравнение

Что делали

Тот же стенд, тот же клиент, те же серии 20k / 60k / 200k — но транзакции подписаны только Ed25519 (стендовый флаг QSN_ALLOW_CLASSICAL_TX; в боевой сети такие транзакции не принимаются). Это контрольный замер: он показывает, сколько «стоит» постквантовая подпись.

Раздача средств классическим кошелькам прошла не всем (у раздающего кошелька кончился баланс: 2 919 принято, 17 081 ошибок), поэтому в серии 200k участвовало 7 735 отправителей × 20 = 154 700 транзакций.

Что получили

38 310
пик TPS без Dilithium
114 929
tx в одном блоке
148 000
tx/с приём в мемпул
230 Б
транзакция вместо 3 509 Б

Стенд 14.09, только Ed25519

ПрогонПринято txБлоки (tx)Пик TPSСреднее TPSПриём в мемпулПик CPU
01-20k (2 000 × 10)20 0001 428 / 14 285 / 4 2874 7622 222116 079 tx/с1,6 ядра
02-60k (6 000 × 10)60 00060 00020 00020 000148 309 tx/с3,8 ядра
03-200k (7 735 × 20)154 700114 929 / 39 77138 31025 783123 138 tx/с10,2 ядра

Сравнение: с Dilithium3 и без

ПоказательEd25519 + Dilithium3Только Ed25519Разница
Пик TPS14 46938 310×2,6
Максимум tx в блоке43 408114 929×2,6
Приём в мемпул27 000–36 400 tx/с116 000–148 000 tx/с×4
Размер транзакции в мемпуле3 509 Б230 Б×15
Пиковая загрузка узла15,7 ядра10,2 ядра
Серия 20k (2 000 × 10)4 762 TPS4 762 TPSодинаково: упор в лимит газа первых блоков

Вывод: проверка подписи Dilithium3 — главная нагрузка. На одном и том же железе без неё цепь даёт ~38 000 TPS в пике, с ней — ~14 500. Всё остальное (консенсус, исполнение, запись на диск) укладывается в слот с большим запасом.

Мы оставляем постквантовую подпись обязательной: квантовая устойчивость важнее, чем ×2,6 к пику. Дальнейшее ускорение планируется за счёт Falcon-512 (более короткая подпись) и разделения проверки по ядрам.

Лог

Раздача средств классическим кошелькам2026-09-14/classical/00-fund.txt
== раздача средств классическим кошелькам 14:04:49
ошибка: {"code":-32603,"message":"Failed to add transaction to mempool: Insufficient balance: 3546250000000000 < 10420000000000000 (value 10000000000000000 + gas 420000000000000)"}
раздача: принято 2919 ошибок 17081 за 0.5 с
Прогон 01-20k (без Dilithium)2026-09-14/classical/01-20k.txt
=== Прогон 01-20k: 2000 отправителей × 10 транзакций = 20000 ===
Начало: 2026-09-14 18:05:12 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdabe6"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4531629447,"enabled":true,"head":895974,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":662000}}
База на диске до: 18G
отправителей 2000, по 10, соединений 256, пачка 128
подписано 20000 за 132.765796ms (24 потоков)
отправлено за 0.17 с → приём 116079 tx/с; принято 20000, ошибок 0
в блоках 20000 из 20000
пик 14285 в блоке → 4762 TPS; в среднем 2222 TPS за 3 блоков по 3 с
по блокам: [1428, 14285, 4287]
Конец: 2026-09-14 18:05:23 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdabea"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4658217511,"enabled":true,"head":895978,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":670000}}
База на диске после: 18G
Пик мемпула: "transactions":20000
Размер транзакции в мемпуле: "avgTxBytes":230
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 18:05:14 узел 163% ядра
01-20k — CPU2026-09-14/classical/01-20k-cpu.txt
18:05:14 узел 163% ядра
18:05:16 узел 6% ядра
18:05:18 узел 66% ядра
18:05:20 узел 25% ядра
18:05:22 узел 13% ядра
01-20k — мемпул2026-09-14/classical/01-20k-mempool.txt
18:05:12.111 h=0xdabe6 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:13.130 h=0xdabe6 "avgTxBytes":230 "memoryBytes":4600000 "transactions":20000 
18:05:14.148 h=0xdabe7 "avgTxBytes":230 "memoryBytes":4271560 "transactions":18572 
18:05:15.169 h=0xdabe7 "avgTxBytes":230 "memoryBytes":4271560 "transactions":18572 
18:05:16.194 h=0xdabe7 "avgTxBytes":230 "memoryBytes":4271560 "transactions":18572 
18:05:17.213 h=0xdabe7 "avgTxBytes":230 "memoryBytes":4271560 "transactions":18572 
18:05:18.233 h=0xdabe8 "avgTxBytes":230 "memoryBytes":986010 "transactions":4287 
18:05:19.254 h=0xdabe8 "avgTxBytes":230 "memoryBytes":986010 "transactions":4287 
18:05:20.275 h=0xdabe9 "avgTxBytes":0 "memoryBytes":0 "transactions":0 
Прогон 02-60k (без Dilithium)2026-09-14/classical/02-60k.txt
=== Прогон 02-60k: 6000 отправителей × 10 транзакций = 60000 ===
Начало: 2026-09-14 18:05:23 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdabea"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4658217511,"enabled":true,"head":895978,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":670000}}
База на диске до: 18G
отправителей 6000, по 10, соединений 256, пачка 128
подписано 60000 за 365.638281ms (24 потоков)
отправлено за 0.40 с → приём 148309 tx/с; принято 60000, ошибок 0
в блоках 60000 из 60000
пик 60000 в блоке → 20000 TPS; в среднем 20000 TPS за 1 блоков по 3 с
по блокам: [60000]
Конец: 2026-09-14 18:05:34 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdabed"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4806576815,"enabled":true,"head":895981,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":676000}}
База на диске после: 18G
Пик мемпула: "transactions":60000
Размер транзакции в мемпуле: "avgTxBytes":230
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 18:05:27 узел 384% ядра
02-60k — CPU2026-09-14/classical/02-60k-cpu.txt
18:05:25 узел 57% ядра
18:05:27 узел 384% ядра
18:05:29 узел 149% ядра
18:05:31 узел 53% ядра
02-60k — мемпул2026-09-14/classical/02-60k-mempool.txt
18:05:23.959 h=0xdabea "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:24.977 h=0xdabea "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:25.997 h=0xdabea "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:27.018 h=0xdabeb "avgTxBytes":230 "memoryBytes":13800000 "transactions":60000 
18:05:28.042 h=0xdabeb "avgTxBytes":230 "memoryBytes":13800000 "transactions":60000 
18:05:29.069 h=0xdabeb "avgTxBytes":230 "memoryBytes":13800000 "transactions":60000 
18:05:30.094 h=0xdabec "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:31.115 h=0xdabec "avgTxBytes":0 "memoryBytes":0 "transactions":0 
Прогон 03-200k (без Dilithium) — пик 38 310 TPS2026-09-14/classical/03-200k.txt
=== Прогон 03-200k: 10000 отправителей × 20 транзакций = 200000 ===
Начало: 2026-09-14 18:05:34 +04
Высота до: {"jsonrpc":"2.0","id":1,"result":"0xdabed"}
Прунинг до: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4806576815,"enabled":true,"head":895981,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":676000}}
База на диске до: 18G
отправителей 7735, по 20, соединений 256, пачка 128
подписано 154700 за 1.052511717s (24 потоков)
отправлено за 1.26 с → приём 123138 tx/с; принято 154700, ошибок 0
в блоках 154700 из 154700
пик 114929 в блоке → 38310 TPS; в среднем 25783 TPS за 2 блоков по 3 с
по блокам: [114929, 39771]
Конец: 2026-09-14 18:05:48 +04
Высота после: {"jsonrpc":"2.0","id":1,"result":"0xdabf2"}
Прунинг после: {"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":4793959802,"enabled":true,"head":895986,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":684000}}
База на диске после: 18G
Пик мемпула: "transactions":154700
Размер транзакции в мемпуле: "avgTxBytes":230
EQUIVOCATION за прогон: 0
Пиковая загрузка узла: 18:05:40 узел 1021% ядра
03-200k — CPU2026-09-14/classical/03-200k-cpu.txt
18:05:36 узел 145% ядра
18:05:38 узел 141% ядра
18:05:40 узел 1021% ядра
18:05:42 узел 288% ядра
18:05:44 узел 185% ядра
18:05:46 узел 65% ядра
03-200k — мемпул2026-09-14/classical/03-200k-mempool.txt
18:05:34.359 h=0xdabed "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:35.379 h=0xdabee "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:36.406 h=0xdabee "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:37.429 h=0xdabee "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:38.451 h=0xdabef "avgTxBytes":0 "memoryBytes":0 "transactions":0 
18:05:39.474 h=0xdabef "avgTxBytes":230 "memoryBytes":35221280 "transactions":153136 
18:05:40.885 h=0xdabef "avgTxBytes":230 "memoryBytes":35581000 "transactions":154700 
18:05:41.918 h=0xdabef "avgTxBytes":230 "memoryBytes":35581000 "transactions":154700 
18:05:42.950 h=0xdabf0 "avgTxBytes":230 "memoryBytes":35581000 "transactions":154700 
18:05:44.000 h=0xdabf0 "avgTxBytes":230 "memoryBytes":9147330 "transactions":39771 
18:05:45.027 h=0xdabf1 "avgTxBytes":0 "memoryBytes":0 "transactions":0 

3. Синхронизация нового узла с нуля (прод → ПК)

Что делали

На обычном домашнем ПК запустили узел с пустой базой (тот же бинарь, что на проде, без ключа валидатора) и засекли, за сколько он догонит боевую сеть (высота ~919 600).

Как это устроено: узел подключается к проду по QUIC и TCP, запрашивает снимок состояния на ближайшей «круглой» высоте (919 600), получает его 4 кусками, проверяет корень состояния и кворум подписей precommit 15 валидаторов, затем импортирует последние блоки с полным исполнением и сверкой корней. Если снимок недоступен, есть запасной путь — импорт всех блоков с нуля.

Что получили

~1 с
пустая база → высота 919 626
4
куска снимка, проверены корень и кворум
~250
блоков/с в запасном режиме

Хронология

ВремяВысота узла на ПК
12:57:43.48старт
12:57:440
12:57:450
12:57:46919 626

Строки «отвергнуто: prevote/precommit h=919589» в логе — голоса консенсуса за старые высоты, которые пришли до загрузки снимка; узел без состояния не может их проверить и отбрасывает. Это штатно.

Лог

Лог синхронизации с нуля2026-09-14/01-sync-from-zero.txt
12:57:43.483178647 старт
12:57:44 высота ПК 0
12:57:45 высота ПК 0
12:57:46 высота ПК 919626
2026-09-14T12:54:48.886175Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: prevote 6178359b9a74 h=919589 r=0: подпись или в
2026-09-14T12:54:48.886255Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit ea4441862344 h=919589 r=0: подпись или 
2026-09-14T12:54:48.886295Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit 238e531b6780 h=919589 r=0: подпись или 
2026-09-14T12:54:48.886335Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit b4807d255eee h=919589 r=0: подпись или 
2026-09-14T12:54:48.886369Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit 9d9a22d68c25 h=919589 r=0: подпись или 
2026-09-14T12:54:48.886401Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit 546c140e3106 h=919589 r=0: подпись или 
2026-09-14T12:54:48.886432Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: prevote 1491a1070b88 h=919589 r=0: подпись или в
2026-09-14T12:54:48.886467Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit 4386356c9d0b h=919589 r=0: подпись или 
2026-09-14T12:54:48.886498Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit aa2fd1e19d47 h=919589 r=0: подпись или 
2026-09-14T12:54:48.887413Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit 94167499717f h=919589 r=0: подпись или 
2026-09-14T12:54:48.887494Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit bfd96102e469 h=919589 r=0: подпись или 
2026-09-14T12:54:48.887568Zщение консенсуса от 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb отвергнуто: precommit 93859697ad8c h=919589 r=0: подпись или 

4. Сеть между узлами

Что делали

Проверили связь между ПК и боевым сервером: обычный ping (10 пакетов), какие соединения держит узел, и как ПК успевает за продом — 20 замеров высоты обеих сторон в течение минуты.

Что получили

9,3 мс
средний ping ПК → сервер
0 %
потерь пакетов
2
соединения: QUIC + TCP (порт 30303)
0
блоков отставания во всех 20 замерах

Показатели

ПоказательЗначение
ping min / avg / max8,03 / 9,28 / 10,86 мс
потери0 % (10 из 10)
пиры у узла на ПК6
соединения с продом/udp/30303/quic-v1 и /tcp/30303
отставание за минуту0 блоков, 20 из 20 замеров

Лог

Лог сети2026-09-14/03-network.txt
== Сеть ПК↔прод 2026-09-14 12:57:57 ==
10 packets transmitted, 10 received, 0% packet loss, time 9011ms
rtt min/avg/max/mdev = 8.027/9.284/10.858/0.950 ms
пиры ПК: 6
2026-09-14T12:57:44.426049ZR CONNECTED: 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb @ /ip4/194.61.89.3/udp/30303/quic-v1 (total: 1)
2026-09-14T12:57:44.497079ZR CONNECTED: 12D3KooWEbn1TnXwDbsuPEeuyXFqP2b5sivBPmN8RMXpCMRCaNhb @ /ip4/194.61.89.3/tcp/30303 (total: 2)
высота ПК 919675, прод 919675
Отставание ПК от прода (20 замеров)2026-09-14/05-follow.txt
== Отставание ПК от прода 2026-09-14 12:59:10 ==
12:59:10 прод 919676 ПК 919676 отставание 0
12:59:14 прод 919677 ПК 919677 отставание 0
12:59:17 прод 919678 ПК 919678 отставание 0
12:59:20 прод 919679 ПК 919679 отставание 0
12:59:24 прод 919680 ПК 919680 отставание 0
12:59:27 прод 919681 ПК 919681 отставание 0
12:59:31 прод 919683 ПК 919683 отставание 0
12:59:34 прод 919684 ПК 919684 отставание 0
12:59:37 прод 919685 ПК 919685 отставание 0
12:59:41 прод 919686 ПК 919686 отставание 0
12:59:44 прод 919687 ПК 919687 отставание 0
12:59:47 прод 919688 ПК 919688 отставание 0
12:59:51 прод 919689 ПК 919689 отставание 0
12:59:54 прод 919690 ПК 919690 отставание 0
12:59:58 прод 919692 ПК 919692 отставание 0
13:00:01 прод 919693 ПК 919693 отставание 0
13:00:04 прод 919694 ПК 919694 отставание 0
13:00:08 прод 919695 ПК 919695 отставание 0
13:00:11 прод 919696 ПК 919696 отставание 0
13:00:14 прод 919697 ПК 919697 отставание 0

5. Нагрузка на прод при подключённом ПК

Что делали

Отправили на боевой узел 9 000 транзакций (300 отправителей × 30) и одновременно смотрели, что происходит на ПК, который следует за сетью.

Как блок доходит до ПК: валидаторы рассылают компактное предложение — только заголовок и хеши транзакций (~32 Б на транзакцию вместо 3,5 КБ). ПК проверяет, какие тела транзакций у него уже есть в мемпуле, недостающие докачивает у соседей и коммитит тот же блок, что и прод.

Что получили

33 628
tx/с приём на проде
2
блока: 1 428 + 7 572
2 524
пик TPS
0 / 0
отказов на проде / на ПК

Итоги

ПоказательЗначение
подписано9 000 за 0,59 с (24 потока)
отправленоза 0,27 с → приём 33 628 tx/с
в блоках9 000 из 9 000
по блокам1 428, 7 572
ПКполучил компактные предложения, докачал тела, закоммитил те же блоки
данные ПК после теста163 МБ

Первый блок снова 1 428 tx — базовый лимит газа; второй блок вобрал остальные 7 572.

Лог

Лог нагрузки 300×302026-09-14/04-load-300x30.txt
== Нагрузка на прод 300×30 2026-09-14 13:00:17, ПК следует ==
подписано 9000 за 588.290086ms (24 потоков)
отправлено за 0.27 с → приём 33628 tx/с; принято 9000, ошибок 0
в блоках 9000 из 9000
пик 7572 в блоке → 2524 TPS; в среднем 1500 TPS за 2 блоков по 3 с
по блокам: [1428, 7572]
13:00:27 ПК высота 919699
13:00:28 ПК высота 919699
13:00:29 ПК высота 919700
13:00:30 ПК высота 919700
13:00:31 ПК высота 919700
13:00:32 ПК высота 919700
13:00:33 ПК высота 919703
13:00:34 ПК высота 919704
13:00:35 ПК высота 919704
13:00:36 ПК высота 919704
13:00:37 ПК высота 919705
13:00:38 ПК высота 919705
13:00:39 ПК высота 919705
13:00:40 ПК высота 919706
13:00:41 ПК высота 919706
13:00:42 ПК высота 919706
13:00:43 ПК высота 919707
13:00:44 ПК высота 919707
13:00:45 ПК высота 919707
13:00:46 ПК высота 919708
13:00:47 ПК высота 919708
13:00:48 ПК высота 919708
13:00:49 ПК высота 919709
13:00:50 ПК высота 919709
13:00:51 ПК высота 919709
13:00:52 ПК высота 919710
13:00:53 ПК высота 919710
13:00:54 ПК высота 919710
13:00:55 ПК высота 919711
13:00:56 ПК высота 919711
13:00:57 ПК высота 919711
13:00:58 ПК высота 919712
13:00:59 ПК высота 919712
13:01:00 ПК высота 919712
13:01:01 ПК высота 919713
13:01:02 ПК высота 919713
13:01:03 ПК высота 919713
13:01:04 ПК высота 919714
13:01:05 ПК высота 919714
13:01:06 ПК высота 919714
--- блоки с tx на ПК:
Компактное предложение height=919700 round=0: 1428 tx, не хват�
Committed block: height=919700, hash=abcabf1e264b7c4677bb8483c6e01c3ff43b11ac09672033c1385
Committed block: height=919701, hash=d7850f84f528b28fa42237d90e0ccf3f0df129fd6bf20567dc942
прод отказов: 0
ПК отказов: 0
данные ПК: 163M

6. Отклик RPC

Что делали

Замерили время ответа основных JSON-RPC-запросов: с ПК на свой локальный узел и с ПК на боевой сервер через интернет. Отдельно — на стенде (локально).

Что получили

0,00–0,06 с
локальный узел на ПК
0,05–0,16 с
прод через интернет
0,08 с
qsn_getAllTransactions через интернет

Задержки, с

ЗапросПК локальноПрод через интернетСтенд локально
eth_blockNumber0,000,160,00
qsn_getMempoolStats0,000,050,00
qsn_getAllTransactions0,000,080,11
qsn_getBlocks0,010,090,26
qsn_getAccounts0,060,100,03
qsn_getNeuralState0,00
qsn_getValidators0,00

qsn_getAllTransactions — запрос, которым страница /transactions обозревателя получает список транзакций; узел отвечает по сводкам блоков из прогретого при старте кэша.

Лог

Задержки RPC: ПК и прод2026-09-14/02-rpc-latency.txt
== RPC задержки 2026-09-14 12:59:09 ==
eth_blockNumber ПК: 0.00s
eth_blockNumber прод-через-интернет: 0.16s
qsn_getMempoolStats ПК: 0.00s
qsn_getMempoolStats прод-через-интернет: 0.05s
qsn_getAllTransactions ПК: 0.00s
qsn_getAllTransactions прод-через-интернет: 0.08s
qsn_getBlocks ПК: 0.01s
qsn_getBlocks прод-через-интернет: 0.09s
qsn_getAccounts ПК: 0.06s
qsn_getAccounts прод-через-интернет: 0.10s
Задержки RPC стенда2026-09-14/dilithium/11-rpc-latency-stage.txt
== Задержки RPC стенда (локально) 14:12:42
eth_blockNumber: 0.00s
qsn_getMempoolStats: 0.00s
qsn_getAllTransactions: 0.11s
qsn_getBlocks: 0.26s
qsn_getAccounts: 0.03s
qsn_getNeuralState: 0.00s
qsn_getValidators: 0.00s

7. Нейроконтроллер

Что делали

В узле работает нейроконтроллер (Brain): он смотрит на заполненность блоков и управляет лимитом газа блока. Мы сняли его состояние до нагрузки, дали 20 000 простых транзакций (4 000 × 5) и сняли состояние после, попутно записывая лимит газа каждого блока.

Что получили

30 000 000
базовый лимит газа блока
3 000 000 000
лимит под нагрузкой
10 мс
задержка решения
1,0
health score, точность прогноза

Показатели Brain (qsn_getNeuralState / qsn_getBrainMetrics)

ПоказательДоПосле
activeNeurons3321
synapseCount1 5681 568
adjustmentCount1921 (totalSteps)
learningRate0,01
plasticity0,8
decisionLatencyMs10
healthScore1,01,0
blockUtilization0,1380,007
gasLimit блока3 000 000 0003 000 000 000 → 825 000 000

Лимит газа по блокам

ВысотаgasLimitgasUsedtx
896 108–896 1153 000 000 00000
896 1163 000 000 000420 000 00020 000
896 117–896 1203 000 000 00000
896 121–896 123825 000 00000

Видно, как контроллер держит высокий лимит после нагрузки, а через несколько пустых блоков плавно опускает его (3 000 000 000 → 825 000 000). Блок с 20 000 tx вошёл целиком (6 667 TPS).

Лог

Лог нейроконтроллера2026-09-14/dilithium/10-neural.txt
== Нейроконтроллер: лимит газа и состояние Brain до/после нагрузки 14:11:55
--- до:
{"jsonrpc":"2.0","id":1,"result":{"activations":{"clusterActivations":{},"globalLevel":0.13781943000000002},"activeNeurons":33,"blockHeight":896108,"brainMood":2,"healthScore":1.0,"isEnabled":true,"isReady":true,"metaLearning":{"adaptationSpeed":0.1,"curriculumStage":100,"learningEfficiency":1.0,"totalSteps":19},"metricsHistorySize":100,"neurotransmitters":{"cortisol":0.0,"dopamine":1.0,"gaba":1.0,"glutamate":0.13781943000000002,"norepinephrine":0.13781943000000002,"serotonin":1.0},"synapseCount":1568,"worldState":{"blockUtilization":0.13781943000000002,"gasPrice":0.0,"globalActivation":0.1378
{"jsonrpc":"2.0","id":1,"result":{"adjustmentCount":19,"blockHeight":896108,"decisionLatencyMs":10,"energyLevel":0.0,"healthScore":1.0,"homeostasis":{"deviation":0.5,"level":1.0,"target":0.5},"isReady":true,"learningRate":0.01,"memoryUtilization":1.0,"metricsHistorySize":100,"neurotransmitters":{"cortisol":0.33333333333333337,"dopamine":1.0,"gaba":1.0,"glutamate":0.0,"norepinephrine":0.0,"serotonin":1.0},"overallConfidence":1.0,"plasticity":0.8,"predictionAccuracy":1.0,"stressLevel":0.33333333333333337}}
14:11:55 высота 896108 gasLimit 3000000000 gasUsed 0 txs 0
14:11:58 высота 896109 gasLimit 3000000000 gasUsed 0 txs 0
14:12:01 высота 896110 gasLimit 3000000000 gasUsed 0 txs 0
14:12:04 высота 896111 gasLimit 3000000000 gasUsed 0 txs 0
14:12:07 высота 896112 gasLimit 3000000000 gasUsed 0 txs 0
14:12:10 высота 896113 gasLimit 3000000000 gasUsed 0 txs 0
--- нагрузка 4000×5 (простые tx):
в блоках 20000 из 20000
пик 20000 в блоке → 6667 TPS; в среднем 6667 TPS за 1 блоков по 3 с
по блокам: [20000]
14:12:18 высота 896116 gasLimit 3000000000 gasUsed 420000000 txs 20000
14:12:21 высота 896117 gasLimit 3000000000 gasUsed 0 txs 0
14:12:24 высота 896118 gasLimit 3000000000 gasUsed 0 txs 0
14:12:27 высота 896119 gasLimit 3000000000 gasUsed 0 txs 0
14:12:30 высота 896120 gasLimit 3000000000 gasUsed 0 txs 0
14:12:33 высота 896121 gasLimit 825000000 gasUsed 0 txs 0
14:12:36 высота 896122 gasLimit 825000000 gasUsed 0 txs 0
14:12:39 высота 896123 gasLimit 825000000 gasUsed 0 txs 0
--- после:
{"jsonrpc":"2.0","id":1,"result":{"activations":{"clusterActivations":{},"globalLevel":0.00702},"activeNeurons":21,"blockHeight":896124,"brainMood":2,"healthScore":1.0,"isEnabled":true,"isReady":true,"metaLearning":{"adaptationSpeed":0.1,"curriculumStage":100,"learningEfficiency":1.0,"totalSteps":21},"metricsHistorySize":100,"neurotransmitters":{"cortisol":0.0,"dopamine":1.0,"gaba":1.0,"glutamate":0.00702,"norepinephrine":0.00702,"serotonin":1.0},"synapseCount":1568,"worldState":{"blockUtilization":0.00702,"gasPrice":0.0,"globalActivation":0.00702,"networkLoad":0.00702,"timestamp":1789395162}}

8. Тайминг блока

Что делали

Из журнала стенда взяли, сколько времени проходит между «исполняем N транзакций», «предложили блок» и «закоммитили блок» для самых больших блоков серии 04-120k.

Что получили

77 мс
исполнение блока 14 285 tx
~0,4 с
исполнение блока 43 408 tx
~1,4 с
от предложения до коммита (43 408 tx)
3 с
слот блока — всё укладывается

Крупные блоки серии 04-120k

БлокtxИсполнениеПредложение → коммитВсего
896 10343 4080,40 с1,38 с1,78 с
896 10442 7010,39 с1,41 с1,81 с
896 10521 6580,29 с0,94 с1,23 с
896 11620 000 (простые)0,10 с0,25 с0,35 с

Пустые блоки идут строго каждые 3 с (896 106 → 896 124 в логе). Блок на 41 160 постквантовых транзакций тоже укладывается в 3-секундный слот.

Лог

Лог тайминга блоков2026-09-14/dilithium/12-block-timing.txt
== Тайминг блока: сборка → предложение → коммит (из лога стенда, последние блоки с tx)
2026-09-14T14:11:38.735239Zuting 43408 transactions for block 896103
2026-09-14T14:11:39.136424Zposed block: height=896103, hash=a6b4253c0799ca20e1f293b1634152f04eedaaa8ae99c4afd8dbd2204a
2026-09-14T14:11:40.514012Zitted block: height=896103, hash=a6b4253c0799ca20e1f293b1634152f04eedaaa8ae99c4afd8dbd2204a
2026-09-14T14:11:41.189110Zuting 42701 transactions for block 896104
2026-09-14T14:11:41.582691Zposed block: height=896104, hash=84672936ecbf1a8967b7bafd4d0f9b9b06574b6597e3fcaf45e58f7d60
2026-09-14T14:11:42.994828Zitted block: height=896104, hash=84672936ecbf1a8967b7bafd4d0f9b9b06574b6597e3fcaf45e58f7d60
2026-09-14T14:11:44.078501Zuting 21658 transactions for block 896105
2026-09-14T14:11:44.366231Zposed block: height=896105, hash=af218cdaff54d890a426565b0520fa75ced59c1800a44f078bbcc643dc
2026-09-14T14:11:45.307105Zitted block: height=896105, hash=af218cdaff54d890a426565b0520fa75ced59c1800a44f078bbcc643dc
2026-09-14T14:11:46.999689Zposed block: height=896106, hash=fbf7eaad4faada1b23cf3485b01dd4d6c280e0accb07d32b7a5e569a22
2026-09-14T14:11:50.013991Zposed block: height=896107, hash=5b938c966301764535674b8c54b48c0b7c5fdf946f8d8e34c068d3a6b4
2026-09-14T14:11:53.061985Zposed block: height=896108, hash=07562e754cb5944ba155826b6c756dd12c115b07afebae82e00ef789a3
2026-09-14T14:11:56.021938Zposed block: height=896109, hash=4d50eac8f00a7f571992a0f308c0ee5b496fe097b3d17784d2b99e19c4
2026-09-14T14:11:59.014666Zposed block: height=896110, hash=e04749f414d20aafd6ebfdc6223871e10661f7ffd718295fb73c4a0496
2026-09-14T14:12:02.014482Zposed block: height=896111, hash=18c8f69601a01d2135ee309f986d8d4b368160f39526e70918ab21589e
2026-09-14T14:12:05.013022Zposed block: height=896112, hash=fef960600d763a5402417a2abf7ca49523c48e53cb715d78cdccc927ad
2026-09-14T14:12:08.011558Zposed block: height=896113, hash=1d70cee0b4f91612f43139eba49689cdc069a76d9ba15cedc9e98cba52
2026-09-14T14:12:11.013902Zposed block: height=896114, hash=af556205389b3caefda9c42d2564d925a424abad3138637ab170e8276c
2026-09-14T14:12:14.011907Zposed block: height=896115, hash=4a45258aa77188b9c5e8903552407a74abb332c7e0a525dcfa54c77f91
2026-09-14T14:12:17.010433Zuting 20000 transactions for block 896116
2026-09-14T14:12:17.112777Zposed block: height=896116, hash=9ccae99fd21b1105b4156903278d129d8e00e7a8825014d30e1cfc8b9e
2026-09-14T14:12:17.362401Zitted block: height=896116, hash=9ccae99fd21b1105b4156903278d129d8e00e7a8825014d30e1cfc8b9e
2026-09-14T14:12:20.001884Zposed block: height=896117, hash=22a4c293dc313de4e0c53168f16e3afd6a2910639a704e70b355ef5dfe
2026-09-14T14:12:23.062283Zposed block: height=896118, hash=8fb3b98ebc8197ae12b63353cfdc0aae6eb324e6ccf6e9ad6005c76c5a
2026-09-14T14:12:26.017161Zposed block: height=896119, hash=a7aad253a2ec592d8438098247fabbff0285d5fc1e233d3e4662ca1268
2026-09-14T14:12:29.014378Zposed block: height=896120, hash=24873e34f1b3efc2af15f12959b5f14f91fe2aa908f0e12a3bd355fb1a
2026-09-14T14:12:32.018292Zposed block: height=896121, hash=a6d7c90435029d916b3db146bfef8cbd7015c4f9e8c665042f63205039
2026-09-14T14:12:35.014488Zposed block: height=896122, hash=9f9548512edbd74f2b3ea23a0c1186698d2c16591cbe6647c6aaec1937
2026-09-14T14:12:38.025939Zposed block: height=896123, hash=9fcff796dc9f62c2a5f19a3e526673f3b2f4222131ce8ee10e2c84fc15
2026-09-14T14:12:41.013487Zposed block: height=896124, hash=16ad730b634321f094d2d6afea690cb01ad423fad73ceb5b923baea38f

9. Вес блока и транзакции, прунинг с архивом, диск

Что делали

Посмотрели, сколько места занимает цепь на диске, как работает прунинг (снятие старых подписей и вынос тел блоков в архив) и сколько весит транзакция и блок в разных местах — в мемпуле, на диске и в сети.

Что получили

17 ГБ
прод, 919 000 блоков
3 509 Б
PQ-транзакция в мемпуле (было 5 501)
~32 Б
на транзакцию в блоке по сети
28 800
блоков хранятся с подписями

Размеры

ЧтоРазмер
Постквантовая транзакция в мемпуле3 509 Б (подпись Dilithium3 3 293 Б; ключ — в регистре, раньше 5 501 Б)
Простая транзакция в мемпуле230 Б
Транзакция на диске~3,5 КБ (сжатие LZ4)
Блок по сети (компактное предложение)~32 Б на транзакцию (хеши)
База прода17 ГБ на 919 000 блоков
База стенда9,5 ГБ (dbBytes 5,75 ГБ)
Данные узла на ПК163 МБ (снимок + свежие блоки)
Мемпул: лимит500 000 tx / 4 ГБ
Мемпул: пик 13.09391 789 tx ≈ 2,15 ГБ

Прунинг (qsn_getPruningStatus)

ПараметрЗначениеСмысл
keepFullBlocks28 800последние сутки блоков хранятся полностью, с подписями
signaturesPrunedTo867 324 (стенд)до этой высоты подписи уже сняты
budgetBytes400 ГБпри превышении старые тела блоков уходят в архив zstd
archivefalse (стенд) / true (прод 13.09)включён ли архивный режим
балансы и заголовкине трогаютсясостояние всегда полное

Самые крупные блоки

ГдеБлокtx
прод916 0459 072
живой testnet 13.09 (рекорд)42 452
стенд 14.09, Dilithium896 10343 408
стенд 14.09, без Dilithium114 929

Лог

Диск и прунинг стенда2026-09-14/dilithium/13-disk.txt
== Диск стенда 14:12:43
9,5G	/home/deb/qsn-stage/data
{"jsonrpc":"2.0","id":1,"result":{"archive":false,"budgetBytes":429496729600,"dbBytes":5750411857,"enabled":true,"head":896124,"historyPrunedTo":0,"keepFullBlocks":28800,"signaturesPrunedTo":867324}}
{"jsonrpc":"2.0","id":1,"result":{"avgTxBytes":0,"limitMemoryBytes":4294967296,"limitTransactions":500000,"memoryBytes":0,"rateLimited":0,"rejectedFull":0,"transactions":0}}

10. Условия стендов и честные оговорки

Что делали

Ниже — на чём именно всё измерялось, чтобы цифры можно было воспроизвести и правильно понять.

Что получили

Стенды

Живой testnet 13.09Стенд-копия прода 14.09ПК 14.09
Железосервер 194.61.89.3: 24 ядра, 54 ГБ ОЗУ, NVMeтот же сервер, тот же CPUобычный домашний ПК, интернет
СетьPyuniq testnet, chainId 99991, высота ~896 000копия живой цепи, высота ~896 000наблюдатель без ключа валидатора, RPC 127.0.0.1:39545
Валидаторы15 в одном процессе, BFT через внутреннюю шину15 в одном процессе— (следует за продом)
Версия узлаQNS-core main 3466c83 (+5e5c59c, 5b86b89)коммит be3406e (регистр ключей)коммит c69bcaa (как прод)
Транзакция5 501 Б (Dilithium3 3 293 Б + ключ 1 952 Б)3 509 Б (ключ один раз в регистре)
Клиент нагрузкиtps_load (Rust), 20 000 отправителей, 256 соединенийtps_load, 2 058 (PQ) / до 7 735 (простые) отправителейtps_load на прод, 300 × 30
Слот блока3 с3 с3 с
Состояниена диске (RocksDB)на дискена диске
Параллельнофоновый прунинг подписейфоновый прунинг

Все 15 валидаторов работают в одном процессе на одном сервере: блоки между ними не ходят по интернету. Цифры TPS показывают, сколько постквантовых транзакций один сервер принимает, проверяет, исполняет и записывает — это не пропускная способность географически распределённой сети. Тест «прод ↔ ПК» (разделы 3–5) — первый шаг к такому замеру.

Кран на стенде 14.09 пополнил 2 058 из 20 000 кошельков Dilithium (71 с). Поэтому серии 02-60k и 03-200k приняли 20 580 и 41 160 транзакций, а не 60 000 и 200 000. Живой testnet 13.09 с полностью пополненными кошельками принял 200 000 за 20 с и 400 000 без потерь.

Раздача классическим кошелькам 14.09 тоже прошла не полностью (2 919 из 20 000; кончился баланс раздающего), серия 03-200k без Dilithium — 154 700 транзакций.

Первый блок каждой серии всегда 1 428 tx (базовый лимит газа 30 000 000), поэтому «среднее TPS» серий с несколькими блоками ниже пика.

Обработка растёт почти линейно (~100 мкс на транзакцию): упор в процессор и диск, суперлинейности нет. Загрузка узла в пике — до 19,5 ядра из 24 (13.09), до 15,7 ядра (14.09).

Все сырые логи (без node.log — он большой) доступны для скачивания одним архивом вверху страницы.

Скачать PDF (RU)Сырые логи (ZIP)