Как шахтерам не дают слишком много работать?

Я понимаю, что внутри транзакций можно писать скрипты, которые заставляют майнеров выполнять какую-то работу.

Как Биткойн гарантирует, что скрипты, заставляющие майнеров выполнять слишком много работы, будут предотвращены?

Ответы (1)

Да, майнеру требуется некоторая вычислительная работа, чтобы «выполнить» скрипт и убедиться, что он позволяет провести транзакцию. На самом деле не только майнеры, но и каждый полный узел в сети Биткойн должен выполнять эти сценарии. Однако существуют меры по ограничению затрат на это.

Биткойн-скрипты не имеют циклов , поэтому объем вычислений, необходимых для выполнения скрипта, примерно пропорционален его длине. В свою очередь, майнеры требуют комиссию за транзакцию, которая примерно пропорциональна длине транзакции (или размеру в байтах), поэтому длинная и относительно дорогостоящая транзакция будет дороже для создателя. Транзакция с длинным скриптом, как правило, будет нестандартной и, следовательно, не будет ретранслироваться по одноранговой сети (хотя она все равно может быть включена в блок майнером, который получил ее каким-то другим способом). Это ограничивает количество узлов, которые когда-либо увидят транзакцию и, следовательно, должны будут проверить сценарий.

Существует последний верхний предел : ни одна транзакция не может превышать максимальный размер блока (в настоящее время 1 МБ).

(Чтобы прояснить семантическое несогласие с ответом амаклина: в случае майнинга пула проверка скрипта может быть выполнена один раз оператором пула от имени отдельных майнеров, которые вносят свой вклад в пул; тогда отдельные майнеры не должны это делать Мой ответ здесь рассматривает пул концептуально как один майнер, поскольку они функционально эквивалентны с точки зрения протокола Биткойн.)