О производительности блокчейна и стоимости транзакций
Как известно в BFT-протоколах существует зависимость между числом узлов-валидаторов и пропускной способностью блокчейна. Чем больше узлов, тем больший объём информации требуется передавать между узлами для достижения консенсуса. Для таких блокчейнов необходимо подобрать баланс между скоростью работы, надежностью и децентрализацией:
Блокчейн Semux работает на собственном BFT-протоколе со 100 узлами-валидаторами. Время блока составляет около 30 сек. При этом требования к аппаратной части для узлов-валидаторов очень демократичны:
Minimum Setup:
- 8GB Memory
- Dual Core CPU
- 100 Mbps BandwidthRecommended 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:
При отправке транзакций, вы можете установить большую стоимость, например, чтобы повысить приоритет транзакции. Но пока сеть блокчейна Semux недостаточно загружена, и переплачивать за транзакции совершенно нет необходимости.
Более того, существует лайф-хак, как можно сэкономить на простых трансфер-транзакциях. Отправлять трансферы можно через вкладку Смарт-контракт:
Используем тип транзакции Call, указываем адрес отправителя, адрес получателя и кол-во SEM для трансфера.
Обратите внимание, что для совершения транзакции вы потратите 21К единиц газа, при цене газа 100 nSEM, что составит всего 0.0021 SEM. Т.е. экономия на комиссии более чем в 2 раза.
Может показаться, что это копейки, но обратите внимание на Animal-pool, ежедневно выплачивающий награды сотням своих делегаторов, и это уже не копейки, а вполне существенная экономия.