Сегодня я узнал, как операции кодируется, которые на самом деле являются скриптами в пре-подобном языке. Скрипты "выполненный" для подтверждения операции. Отсутствие жесткой регламентации, как "стандарт" Сделка должна быть закодирована, позволяет много различных возможных кодировок (или формы выражения) с одной и той же транзакции.
Язык описан здесь: https://en.bitcoin.it/wiki/Script и на самом деле в нижней части страницы представляет собой интересный пример того, как воспользоваться языком для достижения "нестандартный" сделка (в скрытом адрес приемника). Универсальное кодирование с помощью сценариев потенциально позволяет много других интересных функций, которые будут реализованы.
Тем не менее, я также наткнулся на описание последних инцидентов, которые требуют решения путем модификации программного обеспечения клиента. Это в https://en.bitcoin.it/wiki/Incidents и наиболее примечательным является последним пунктом идет о LShift и ВОЗВРАТ ошибок. По-видимому, некоторые команды сценария были нарушены, чтобы вызвать ошибки в клиентах. В реакции, команды были отключены (вместо того, чтобы просто была исправлена). Moreso, многие другие "в настоящее время не используется" Команды были отключены, а также, "из соображений безопасности",
Я понимаю, что скриптовые движки создают угрозу безопасности.
Но есть два основных вопроса, которые непосредственно формируют в моем сознании.
1) Если сценарий двигатели представляют собой угрозу безопасности, то почему большинство его остается включенным даже после того, как реагировать на этот инцидент? Не было бы "безопаснее" для обеспечения фиксированного прямыми вперед кодирования для каждой желаемой формы сделки и избавиться от сценариев ALLtogether? Плавный переход может быть легко достигнуто (я могу уточнить, если желательно). Это сделало бы будущие инциденты невозможно, повышение безопасности программного обеспечения.
2) Если, с другой стороны, создание сценарии желательны с целью создания условий для нестандартных способов трансакций поддерживаться всеми клиентами, то это уже сломано! В конце концов, один раз "правовой" Команда сценариев как OP_XOR является "запрещено" Cегодня. Если бы я реализовал ранее что-то вроде "отправить скрытый адрес приемника" используя OP_XOR, транзакция не будет проверять больше в сегодняшнем клиенте. Он остановится на недопустимую инструкцию, и игнорировать всю дальнейшую историю монеты (хотя Previos версии одного и того же программного обеспечения, приняли бы его!).
Как программист, я не могу полагаться на использование какой-либо команды сценариев, потому что я не могу знать, что может стать инвалидом завтра. За исключением, может быть, те, которые генерируются большинство клиентов в повседневных операциях. И даже те, могут стать недействительными в будущем (например, если скрипты которые покончили с). Прецедент уже здесь.
Поэтому я спрашиваю: сколько я могу полагаться на сценариях? Могу ли я верить, что любая команда, которую я использую в подтвержденной транзакции, не будут блокироваться в будущем?
Я также спросить: Может ли приемник моих битов полагаться на моей умно сценарного сделки, чтобы быть не-revokable? Там есть спина на это, берегитесь! Позвольте привести пример. Bitcoin хоронит сделки в blockchain, что делает его труднее doublespend как проходит время. Если бы я был злым, я мог бы найти новую ошибку в команде сценария. Я мог бы использовать команду, чтобы сформировать безвредную сделку (не инициирующая ошибки). Было бы прекрасно работать в существующих клиентов и превратить его в blockchain. Это дало бы право собственности на свои деньги кому-то другому, и это будет подтверждено по истечении определенного времени. Приемник монеты поверит, что я не могу отменить сделку. Но, возможно, я могу? Я мог бы опубликовать зло эксплойта на основе команды, которые я использовал в моей транзакции, а также поощрять developpers отключить команду так же, как они инвалиды OP_XOR. Новые (фиксированные) клиенты не смогут больше разобрать сделку. Монета будет падать обратно ко мне задним числом, так как я последний законный владелец (по ныне изменились правила). Обоснованность цепи сделок сломается на мой специальный скрипт, и я мог бы начать новый действующий филиал еще раз тратить монету (используя действительные команды сценария).
Я знаю, что это пример, взятый до крайности, но он служит, чтобы показать, как либо решения о безопасности сценариев могут иметь неожиданные побочные эффекты.
Мнения на этот пост? Или, может быть, даже комментарии от тех, кто участвует в решении отключить команды?