О производительности блокчейна и стоимости транзакций

Savel
SEMUX на русском
3 min readJan 30, 2020

Как известно в BFT-протоколах существует зависимость между числом узлов-валидаторов и пропускной способностью блокчейна. Чем больше узлов, тем больший объём информации требуется передавать между узлами для достижения консенсуса. Для таких блокчейнов необходимо подобрать баланс между скоростью работы, надежностью и децентрализацией:

Блокчейн Semux работает на собственном BFT-протоколе со 100 узлами-валидаторами. Время блока составляет около 30 сек. При этом требования к аппаратной части для узлов-валидаторов очень демократичны:

Minimum Setup:
- 8GB Memory
- Dual Core CPU
- 100 Mbps Bandwidth
Recommended Setup:
- 16GB Memory
- Quad Core CPU
- 200 Mbps Bandwidth

В протоколе для обычных транзакций (типа transfer, vote, unvote, delegate) установлено ограничение на размер блока 1 МБ. Это позволяет вместить до 5333 простых трансфер-транзакций. Таким образом, мы получаем пропускную способность на уровне 170 транзакций в секунду для передачи криптовалюты SEM между адресами и голосования за валидаторов.

Смарт-контракты и вызовы EVM

В текущие версии ядра Semux v2.x интегрирована виртуальная машина с реализацией механизма использования газа, как это работает в Эфириуме. Например, трансфер-функция потребует около 21 000 газа. Чтобы обеспечить совместимость с обычными транзакциями, в ядре жестко установлено ограничение на лимит газа 30М единиц в блоке.

Так же в конфигурации ПО узлов-валидаторов (в кошельке) заложены ограничения по-умолчанию:

#================
# Transaction pool
#================
# Set the maximum gas this client can process in one block proposal
txpool.blockGasLimit = 10000000
# The minimum price this client will accept for gas
txpool.minGasPrice = 100

Т.е. по-умолчанию, в кошельке валидаторов установлен лимит газа 10М в блоке. Это значение можно изменить, например, увеличив аж до 30М, но вряд ли кто-то из валидаторов менял это значение.

Т.о. получается, что в блок умещается 10М / 21К = 476 трансфер-вызовов. А возможный максимум 30М / 21К = 1428 трансфер-вызовов. Эти ограничения вполне искусственны и могут быть изменены в новых версиях протокола Semux (но для этого понадобится хардфорк).

Стоимость транзакций

Минимальная стоимость обычных транзакций в сети Semux установлена 0.005 SEM:

Комиссия за трансфер-транзакцию составляет 0.005 SEM

При отправке транзакций, вы можете установить большую стоимость, например, чтобы повысить приоритет транзакции. Но пока сеть блокчейна Semux недостаточно загружена, и переплачивать за транзакции совершенно нет необходимости.

Более того, существует лайф-хак, как можно сэкономить на простых трансфер-транзакциях. Отправлять трансферы можно через вкладку Смарт-контракт:

Используем тип транзакции Call, указываем адрес отправителя, адрес получателя и кол-во SEM для трансфера.

Обратите внимание, что для совершения транзакции вы потратите 21К единиц газа, при цене газа 100 nSEM, что составит всего 0.0021 SEM. Т.е. экономия на комиссии более чем в 2 раза.

Может показаться, что это копейки, но обратите внимание на Animal-pool, ежедневно выплачивающий награды сотням своих делегаторов, и это уже не копейки, а вполне существенная экономия.

--

--