Криптотрейдинг: прибыльная торговля криптовалютой.
Май 15, 2019
33 Views
Комментарии к записи Волатильность транзакций в биткойнах, нулевые изменения входных данных и их влияние на обмен биткойнов отключены

Волатильность транзакций в биткойнах, нулевые изменения входных данных и их влияние на обмен биткойнов

Written by
Биткоин: краткое руководство

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

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

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

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

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

По сути, транзакции с биткойнами включают расходы на публикацию (которые можно рассматривать как биткойны) внутри «адреса биткойнов», и затем они получают некоторые изменения. Например, если бы у меня была одна запись BTC 10 и я хотел отправить кому-то 1 BTC, я бы создал транзакцию следующим образом:

10 BTC -> 1 BTC (для пользователя) и 9 BTC (обратно друг к другу)

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

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

Однако это предположение неверно.

Если транзакция изменена, ядро ​​Биткойн может в конечном итоге попытаться создать новую транзакцию, используя изменение 9 BTC, но на основе неверной входной информации. Это связано с тем, что фактический идентификатор транзакции и связанные данные изменились в цепочке блоков.

Поэтому ядро ​​Биткойн никогда не должно доверять этому случаю и всегда должно ждать подтверждения изменения перед отправкой этого изменения.

Биржа Биткойн может настроить свой основной узел Биткойн так, чтобы он больше не допускал изменений с нулевым подтверждением в любой транзакции Биткойн. Вы можете настроить это, запустив bitcoind с опцией -spendzeroconfchange = 0.

Это, однако, недостаточно, и это может привести к ситуации, в которой транзакции не могут быть отправлены, потому что не хватает входных данных, по крайней мере, с одним подтверждением отправки новой транзакции. Вот почему мы также запускаем процесс, который:

  1. Проверяет доступные, невыпущенные, но подтвержденные входные данные, вызывая bitcoin-cli listunspent 1.
  2. Если входов меньше, чем x (сейчас их двенадцать), сделайте следующее:
    1. Проверьте, какие входные данные примерно для 10 BTC.
    2. Узнайте, как максимально разделить его на 1 транзакцию BTC, оставляя достаточно места для оплаты.
    3. Позвоните в биткойн-клик sendman, чтобы отправить эти входные данные ~ 10 BTC примерно на 10 выходных адресов, каждый из которых принадлежит рынку биткойнов.

Таким образом, мы можем преобразовать один вход 10 BTC примерно в 10 входов BTC, которые можно использовать для дальнейших транзакций. Мы делаем это, когда у нас «кончается» на входах, а их на 12 меньше.

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

Однако остается одна проблема — до того, как мы внедрили это изменение, были отправлены некоторые транзакции, которые основаны на мутированном изменении и никогда не будут подтверждены.

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

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

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

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

Несмотря на то, что обдумывается только кратко, возможно, что будущие версии программного обеспечения Биткойн обнаружат себя, когда на входах изменений появится пластичность, и затем выполнят одно из следующих действий:

  1. Отметьте эту транзакцию как отклоненную и удалите ее из кошелька, что, как мы знаем, никогда не будет подтверждено (потенциально рискованно, особенно если это реорг). Возможно, сообщите владельцу узла.
  2. Попробуйте «перепаковать» транзакцию, т. Е. Использовать то же самое из адреса и адресации параметров, но с правильным вводом из транзакции изменения, которая была принята в блоке.
Article Categories:
Криптовалюта
Как устроен блокчейн

Comments are closed.