Люк, как вам не стыдно за просто сбросив это сообщение и призыв к голосованию форум, не давая людям, которые не согласны с вами изрядное время, чтобы написать противостоящую позицию. (Edit: В частности я жалуюсь аспект форума голосования этого, Лука был очень искренним со своими жалобами, по крайней мере с тех пор он начал разводить их)
Как много вещей, тонкие детали здесь технические может быть сложно понять. Трудно найти выражение ситуации, чтобы помочь людям причины о последствиях без необходимости изучать все, что разработчики знают.
Вот мой взгляд на ситуации: У нас есть несколько взаимосвязанных потребности: Мы должны иметь приемник контролируемого расположение средств (например, вы должны быть в состоянии избрать иметь многопартийный обеспеченный бумажник _personally_ без обременения людей, которые посылают вам) , нам это нужно иметь компактное представление как в качестве адреса (600 байт адреса имеют серьезные проблемы с юзабилити) и в цепи (так что отправитель не должен платить большие гонорары только потому, что у вас есть сложный эскроу для вашей учетной записи), и в идеале мы хотели бы, чтобы переместить больше памяти blockchain от выходов к входам, так как входы всегда prunable так что это поможет укротить цепи наворотов в будущем.
После некоторого обсуждения было предложено, чтобы добавить новый код операцию, OP_EVAL, который позволил бы транзакцию проверенного сценария, представленному в самой сделке. С раствором в руке, не больше альтернатив не были рассмотрены и реализация была выполнена.
Вещи выглядят довольно хорошо в течение месяца, но затем Roconnor пошел реализовать OP_EVAL в его собственной реализации коды проверки Bitcoin blockchain, и он сразу же звучал сигналы тревоги: Он нашел несколько серьезных ошибок в реализации OP_EVAL (которые были быстро фиксированных), но он также имел более фундаментальную жалобу: OP_EVAL делает сценарий Тьюринга, и ломает способность статически анализировать сценарии.
По крайней мере, прежняя часть не была неизвестна другим developers-, но я не думаю, что мы думали о последствиях полностью, потому что добавление Тьюринга полноты вовсе не было одной из целей (см выше список), это было побочный эффект. Побочный эффект, который мы думали, был приручен пределами рекурсии (которые фактически не работают), но пределы рекурсии не достаточно, чтобы восстановить analyizability сценария, который теряется.
Analyiziability важен, потому что его, что позволяет сделать определенное, точное, заявление о том, что сценарий будет и не будет делать без фактического его выполнения. Это также делает возможным написание реализаций Bitcoin с более сильным конкретным и проверяемым заявлением об их безопасности. Это свойство, которое позволяет поддерживать принцип безопасности "подтвердить ввод; затем действовать на него", Поскольку безопасность системы Bitcoin приходит _PURELY_ из Software- него не имеет значения, насколько велики Гевины, он не может изменить свои операции, если они выходят из строя из-за программное обеспечение bugs- его очень важен для дальнейшего принятия Bitcoin, что мы сможем его резервная копию с наиболее защищенным программным обеспечением возможно, и что мы сможем доказать, что безопасность скептиков.
проблемы Roconnor пришел очень поздно в процессе, но они заслужили много веса: Как один из немногих людей, которые реализовали всю систему с нуля (даже не то, что Гэвин может сказать о себе), он имеет важное и почти уникальную перспективу, он также может по праву считаться экспертом в области формальной проверки программного обеспечения, и его проблемы пришли упакованы с уязвимостями реальной безопасности, что все остальные были missed- доказать свое глубокое понимание кода. ТД, автор реализации BitcoinJ, уже выразил серьезные сомнения по поводу всего этого.
Пожалуй, наиболее существенно для меня это простой факт: Сценарий был очень четко разработан Satoshi НЕ быть Тьюринга, и значительные усилия были предприняты в этой конструкции для достижения этого свойства. Второе предложение описания сценария на нашей вики говорит
"Он целенаправленно не Тьюринг-полной, без петель.". Кажется, глупо мне отказаться от основного принципа разработки сценария, один из которых значительно помогает в рассуждениях о своей безопасности, без штопать уважительную причину. И мы не имеем оснований на все- нашей цели не имели ничего общего с Тьюринг-полноты, что был просто побочный эффект. (Ограничения на размер сценария и ограниченного ввода-вывода сделать это довольно трудно придумать что-нибудь, где Тьюринга полнота является на самом деле полезно)
После дальнейшего обсуждения и итерации в течение примерно полутора десятков других предложений было осознано, что можно было достичь _exactly_ первоначальных целей, в гораздо более простым способом, без введения Тьюринга полноты. Это то, что делает P2SH. Я лично считаю, что если бы мы придумали идею P2SH первых, мы бы остановились там и никогда не считали OP_EVAL.
К сожалению, Люк принял эту позицию, я считаю странным: Это P2SH плохо, потому что это особый случай, вместо того, чтобы быть регулярным опкодом, который выполняет произвольный код, и это специальные caseness делает безвкусным. Моя собственная позиция в том, что ничто из этого не является естественным законом: каждое поведение является частным случаем и происходит только потому, что программное обеспечение говорит, что SO- некоторые части являются более регулярными, чем другие, но то, что мы должны заботиться о том, сложности реализации и сложность P2SH очень низкая ,
Что озадачивает меня больше в том, что Лука заявил, что он будет удерживать его жалобу, если «другие разработчики объявили, что» "Bitcoin 2.0" (Независимо от того, что будет) будет использовать только транзакции P2SH стиль и без P2SH будет устаревшей. Я думаю, что много людей, которые считают этим считают это likelihood- потенциал экономия обрезки операций типа P2SH огромна и может значительно уменьшить спам риску, но никто не может давать обещания о будущей системе, которая не существует и не может включают текущие разработчик или никогда не может существовать.
[Кроме того, было жаль, что Лука имел другие обязательства на еженедельном совещании в целях развития, где ~ все остальные решили, что P2SH является приемлемым компромиссом, так он вроде появился через два дня жаловался на это после того, как она была воспринята многими другими людьми, уже решен. В результате не много внимания было уделено его жалобы, несмотря на то, что он был довольно настойчив о них]
Я не вижу много неподдельности жалоб, которые принимают форму "сделать это полностью, или нет вообще, немного не приемлемо" если нет хорошей причины того, что умеренный путь плохой, и я не вижу никаких причин, почему умеренный путь является плохим один здесь.
P2SH хорошее техническое решение, которое отвечает нашим потребностям и имеет пониженную сложность и риск по сравнению с OP_EVAL. Следует ли когда-либо будет необходимо для полноты Тьюринга, которая OP_EVAL предлагает достаточно, чтобы оправдать затраты / риски, то это может быть развернутыми, P2SH не исключает возможности OP_EVAL в будущем.