Почему не поддерживается замена транзакций?

В вики-статье о контрактах рассказывается о лучших вещах, которые вы можете сделать с задержками и заменами. (Время блокировки и порядковые номера соответственно.) Но согласно документации замена пока не поддерживается. Почему бы и нет?

(Если ответ «это еще не реализовано», то почему?)

Ответы (4)

Это неправильно. Реализовано поле nLockTime. Некоторое время назад его намеренно отключили, чтобы уменьшить сложность протокола. Причиной стала серия атак на основе протоколов, нарушивших целостность системы.

В какой-то момент функция будет повторно активирована. Вероятно, после того, как кто-то написал комплексный набор тестов и технический анализ, показывающий, что повторное включение не является рискованным.

Предположительно, под «Это неправильно» вы имеете в виду ответ Томаса, но формат Stackexchange не делает контекст совершенно ясным и неизменным.
Действительно ли nLockTime деактивирован? Может ли кто-нибудь предоставить источник?

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

Замена транзакций не поддерживается, потому что разработчики заявили, что сама идея замены на основе nSequence проблематична и, возможно, никогда не будет включена, очевидно, это вызывает потенциальные проблемы с отказом в обслуживании. Они обсуждают это здесь:

https://bitcointalk.org/index.php?topic=131443.0

Однако я не думаю, что замена транзакций действительно нужна, потому что недавно разработчики сделали так, что транзакции, использующие lock_time и версию < UINT_MAX, являются «нестандартными». Это означает, что транзакции, использующие lock_time, не будут ретранслироваться в одноранговой сети до тех пор, пока не будет достигнуто lock_time, после чего вы можете отправить транзакцию для ретрансляции, и она будет считаться стандартной и сможет войти в блокчейн. .

Причина, по которой я думаю, что это заботится о большинстве случаев использования, заключается в том, что замена была необходима только тогда, когда заблокированные транзакции ретранслировались и сохранялись в пулах памяти, поэтому, если транзакция не была заблокирована, она не будет принята потому что замена не была реализована, а заблокированная транзакция уже была в мемпуле. Поскольку заблокированные транзакции не будут ретранслироваться и храниться в мемпулах до тех пор, пока не будет достигнуто время блокировки, я считаю, что замена гораздо менее важна, поэтому тот факт, что она не будет реализована в ближайшее время, не является проблемой.

это еще не реализовано.

В протоколе определены эти функции, поэтому их можно будет реализовать в будущем, но в настоящее время ведутся работы над более важными функциями.

Разветвите репозиторий и создайте патч для добавления поддержки: p

Вот сайт, который показывает реализацию кода nLockTime, работает он или нет, я понятия не имею, некоторые говорят, что он реализован, другие говорят, что нет.

http://brainwallet.org/#tx