Тесты QNS
Реальные замеры сети: пропускная способность с постквантовыми подписями, синхронизация узла с нуля, сеть между узлами, отклик RPC, нейроконтроллер, тайминг блоков, диск. Для каждого теста — что делали, что получили и настоящий лог.
Замеры 13–14 сентября 2026
Ключевые цифры
| Показатель | Значение | Примечание |
|---|---|---|
| Пик 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 TPS | 200 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 блоков, с прунингом |
Содержание
- TPS с постквантовыми подписями (Ed25519 + Dilithium3)
- TPS без Dilithium (простые подписи Ed25519) и сравнение
- Синхронизация нового узла с нуля (прод → ПК)
- Сеть между узлами
- Нагрузка на прод при подключённом ПК
- Отклик RPC
- Нейроконтроллер
- Тайминг блока
- Вес блока и транзакции, прунинг с архивом, диск
- Условия стендов и честные оговорки
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.09 (с регистром ключей, транзакция 3 509 Б)
| Прогон | Принято tx | Блоки (tx) | Пик TPS | Среднее TPS | Приём в мемпул | Пик CPU |
|---|---|---|---|---|---|---|
| 01-20k (2 000 × 10) | 20 000 | 1 428 / 14 285 / 4 287 | 4 762 | 2 222 | 36 292 tx/с | 5,1 ядра |
| 02-60k (2 058 × 10) | 20 580 | 20 580 | 6 860 | 6 860 | 33 971 tx/с | 5,9 ядра |
| 03-200k (2 058 × 20) | 41 160 | 41 160 | 13 720 | 13 720 | 36 437 tx/с | 9,7 ядра |
| 04-120k (2 058 × 60) | 123 480 | 1 428 / 14 285 / 43 408 / 42 701 / 21 658 | 14 469 | 8 232 | 27 088 tx/с | 15,7 ядра |
Живой testnet 13.09 (до регистра ключей, транзакция 5 501 Б)
| Прогон | Принято tx | Приём в мемпул | Блоки с tx | Пик в блоке | Пик TPS | Примечание |
|---|---|---|---|---|---|---|
| 01-20k | 20 000 | 37 474 tx/с | 1 | 20 000 | 6 667 | всплеск, в итогах не учитывается |
| 02-60k | 60 000 | 29 499 tx/с | 2 | 41 229 | 13 743 | |
| 03-200k | 200 000 | 30 800 tx/с | 7 | 42 452 | 14 151 | 200 000 tx за 20 с ≈ 10 000 TPS устойчиво |
| 04-400k | 400 000 | 18 542 tx/с | 20 | 37 567 | 12 522 | |
| 05-200k-control | 200 000 | 31 225 tx/с | 5 | 90 123 | 30 041* | первый блок без бюджета времени (~9 с) |
| 06-400k-sustained | 400 000 | 37 121 tx/с | 15 | 37 390 | 12 463 | 0 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 транзакций.
Что получили
Стенд 14.09, только Ed25519
| Прогон | Принято tx | Блоки (tx) | Пик TPS | Среднее TPS | Приём в мемпул | Пик CPU |
|---|---|---|---|---|---|---|
| 01-20k (2 000 × 10) | 20 000 | 1 428 / 14 285 / 4 287 | 4 762 | 2 222 | 116 079 tx/с | 1,6 ядра |
| 02-60k (6 000 × 10) | 60 000 | 60 000 | 20 000 | 20 000 | 148 309 tx/с | 3,8 ядра |
| 03-200k (7 735 × 20) | 154 700 | 114 929 / 39 771 | 38 310 | 25 783 | 123 138 tx/с | 10,2 ядра |
Сравнение: с Dilithium3 и без
| Показатель | Ed25519 + Dilithium3 | Только Ed25519 | Разница |
|---|---|---|---|
| Пик TPS | 14 469 | 38 310 | ×2,6 |
| Максимум tx в блоке | 43 408 | 114 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 TPS | 4 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 валидаторов, затем импортирует последние блоки с полным исполнением и сверкой корней. Если снимок недоступен, есть запасной путь — импорт всех блоков с нуля.
Что получили
Хронология
| Время | Высота узла на ПК |
|---|---|
| 12:57:43.48 | старт |
| 12:57:44 | 0 |
| 12:57:45 | 0 |
| 12:57:46 | 919 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 замеров высоты обеих сторон в течение минуты.
Что получили
Показатели
| Показатель | Значение |
|---|---|
| ping min / avg / max | 8,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 КБ). ПК проверяет, какие тела транзакций у него уже есть в мемпуле, недостающие докачивает у соседей и коммитит тот же блок, что и прод.
Что получили
Итоги
| Показатель | Значение |
|---|---|
| подписано | 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-запросов: с ПК на свой локальный узел и с ПК на боевой сервер через интернет. Отдельно — на стенде (локально).
Что получили
Задержки, с
| Запрос | ПК локально | Прод через интернет | Стенд локально |
|---|---|---|---|
| eth_blockNumber | 0,00 | 0,16 | 0,00 |
| qsn_getMempoolStats | 0,00 | 0,05 | 0,00 |
| qsn_getAllTransactions | 0,00 | 0,08 | 0,11 |
| qsn_getBlocks | 0,01 | 0,09 | 0,26 |
| qsn_getAccounts | 0,06 | 0,10 | 0,03 |
| qsn_getNeuralState | — | — | 0,00 |
| qsn_getValidators | — | — | 0,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) и сняли состояние после, попутно записывая лимит газа каждого блока.
Что получили
Показатели Brain (qsn_getNeuralState / qsn_getBrainMetrics)
| Показатель | До | После |
|---|---|---|
| activeNeurons | 33 | 21 |
| synapseCount | 1 568 | 1 568 |
| adjustmentCount | 19 | 21 (totalSteps) |
| learningRate | 0,01 | — |
| plasticity | 0,8 | — |
| decisionLatencyMs | 10 | — |
| healthScore | 1,0 | 1,0 |
| blockUtilization | 0,138 | 0,007 |
| gasLimit блока | 3 000 000 000 | 3 000 000 000 → 825 000 000 |
Лимит газа по блокам
| Высота | gasLimit | gasUsed | tx |
|---|---|---|---|
| 896 108–896 115 | 3 000 000 000 | 0 | 0 |
| 896 116 | 3 000 000 000 | 420 000 000 | 20 000 |
| 896 117–896 120 | 3 000 000 000 | 0 | 0 |
| 896 121–896 123 | 825 000 000 | 0 | 0 |
Видно, как контроллер держит высокий лимит после нагрузки, а через несколько пустых блоков плавно опускает его (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.
Что получили
Крупные блоки серии 04-120k
| Блок | tx | Исполнение | Предложение → коммит | Всего |
|---|---|---|---|---|
| 896 103 | 43 408 | 0,40 с | 1,38 с | 1,78 с |
| 896 104 | 42 701 | 0,39 с | 1,41 с | 1,81 с |
| 896 105 | 21 658 | 0,29 с | 0,94 с | 1,23 с |
| 896 116 | 20 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. Вес блока и транзакции, прунинг с архивом, диск
Что делали
Посмотрели, сколько места занимает цепь на диске, как работает прунинг (снятие старых подписей и вынос тел блоков в архив) и сколько весит транзакция и блок в разных местах — в мемпуле, на диске и в сети.
Что получили
Размеры
| Что | Размер |
|---|---|
| Постквантовая транзакция в мемпуле | 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.09 | 391 789 tx ≈ 2,15 ГБ |
Прунинг (qsn_getPruningStatus)
| Параметр | Значение | Смысл |
|---|---|---|
| keepFullBlocks | 28 800 | последние сутки блоков хранятся полностью, с подписями |
| signaturesPrunedTo | 867 324 (стенд) | до этой высоты подписи уже сняты |
| budgetBytes | 400 ГБ | при превышении старые тела блоков уходят в архив zstd |
| archive | false (стенд) / true (прод 13.09) | включён ли архивный режим |
| балансы и заголовки | не трогаются | состояние всегда полное |
Самые крупные блоки
| Где | Блок | tx |
|---|---|---|
| прод | 916 045 | 9 072 |
| живой testnet 13.09 (рекорд) | — | 42 452 |
| стенд 14.09, Dilithium | 896 103 | 43 408 |
| стенд 14.09, без Dilithium | — | 114 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 — он большой) доступны для скачивания одним архивом вверху страницы.
