Как Hyperledger Sawtooth заботится о бесконечных / бесконечных циклах? - PullRequest
0 голосов
/ 06 декабря 2018

Я не смог найти ничего конкретного о том, как Hyperledger Sawtooth решает проблему бесконечных циклов, созданных по ошибке или добровольно разработчиком (только некоторые проблемы, касающиеся семейства транзакций IntKey Выполнение команды рабочей нагрузки Intkeyбесконечный цикл с неверным URL ).

Я уверен, что в Hyperledger Fabric концепция тайм-аута выполнения кода цепочки позволяет избежать создания бесконечных циклов, но какой механизм используетсяв Hyperledger Sawtooth ?

Спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Лучшее, что можно сделать, - это протестировать свой пользовательский процессор транзакций.Распространенной ошибкой при написании процессорных транзакций является код возврата.InternalError предполагается, что это временная ошибка (некоторая внутренняя ошибка, такая как «нехватка памяти», которая является временной), и может быть успешной при повторной попытке.Валидатор повторяет транзакцию с TP и приводит к циклу.Если транзакция недействительна, вы, вероятно, захотите вызвать ошибку InvalidTransaction.Итог - внутренние ошибки повторяются, и недопустимые транзакции не повторяются.

Чтобы сделать вашу цепочку блоков более устойчивой к неисправным процессорам транзакций, я настоятельно рекомендую запустить Validator в параллельном режиме.Это позволило бы обрабатывать другие транзакции в случае попадания какой-либо ошибки в процессор транзакций.Для запуска в режиме параллельной обработки используйте sawtooth-validator --scheduler parallel -vv

Sawtooth Validator также проверяет соединения с процессорами транзакций, и те, которые не отвечают (зависают или заморожены), удаляются.

Редактировать: как дляВаш дополнительный вопрос о снижении DoS, есть тест на противодавление в Sawtooth.Противодавление - это метод контроля потока, помогающий предотвратить DoS-атаки.Если валидатор перегружен, он перестанет принимать новые партии, пока не справится с дополнительной работой.Количество пакетов, которое может принять валидатор, основано на множителе QUEUE_MULTIPLIER (в настоящее время 10, ранее 2), умноженном на скользящее среднее число опубликованных пакетов.

Кроме того, можно поместить сеть Sawtooth позадиVPN.Sawtooth - разрешенный предприимчивый блокчейн и не предназначен для использования в общедоступном Интернете.

...