Транзакции со временем ожидания (используя nLockTime)

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

https://en.bitcoin.it/wiki/Спецификация_протокола#tx

Это может быть полезно в некоторых контрактах, но замена пока не поддерживается:

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

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

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

ОБНОВЛЕНИЕ: Открыто обсуждение на https://bitcointalk.org/index.php?topic=131443.0 для дальнейшего изучения.

Средство Lock_time имеет потенциал для функции типа «Пенсия». IE Купите 1 биткойн сегодня и заблокируйте доступ к нему на 10 лет. Отправлено на адрес кошелька Brain, поэтому независимо от того, какой клиент вы используете и где бы вы ни находились, вы можете забрать свой биткойн, пенсию или инвестиции. Можно ли изменить его так, чтобы он выпускал эти инвестиции, скажем, в размере 1% каждые X месяцев UTC, чтобы вы получали 1% каждый месяц на адрес Brainwallet. Таким образом, пенсионные платежи в BTC засчитываются как минимум за 10 лет. Вы ожидаете, что доходность будет постоянно сокращаться, но, поскольку биткойн является дефляционным, возможно, нет.

Ответы (2)

Решено. Вы можете подготовить транзакции со временем ожидания, и стандартный клиент их примет.

Вы можете проверить некоторые детали: https://bitcointalk.org/index.php?topic=131443.0

По сути, я смог создать необработанную транзакцию https://en.bitcoin.it/wiki/Raw_Transactions , используя биткойн. Затем перед подписанием я мог бы вручную заменить байты на порядковый номер и время блокировки. У меня были некоторые трудности с locktime. Сначала вы устанавливаете желаемую метку времени UNIX, затем конвертируете в шестнадцатеричный формат, переворачиваете байты (с прямым порядком байтов) и заменяете последние байты шестнадцатеричной транзакции. https://en.bitcoin.it/wiki/Protocol_specification#tx сообщает вам, какие байты являются соответствующими. Позже вы сможете подписать новую транзакцию и отправить ее.

Я использовал руководство в: https://people.xiph.org/~greg/signdemo.txt

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

ХОРОШО. Это быстро стало интересно. Я создал небольшой обозреватель блоков и обнаружил в блоках 5 транзакций с высокими значениями nLockTime:

http://blockexplorer.com/rawblock/000000000000036a546044e094db778e1c146f051cd5d0e52fb0e6c43e63ea8c

http://blockexplorer.com/rawblock/000000000000049bd7c8aebf91efc907c880a35c05b7861b4eab3fc09655bb05

http://blockexplorer.com/rawblock/00000000000005f229df518de50c53616f4f2f895deca078dce1d74d5b79e39c

http://blockexplorer.com/rawblock/000000000000026e8536f6ffe741feeb30d7123e6435b3ad7db141833969b5bf

http://blockexplorer.com/rawblock/00000000000001d985839442aac0179713fc7f6e5b109d524a272d3d55600d7a

В каждом блоке есть по одному со значениями времени блокировки 198370, 199000, 199000, 207150 и 207167. Срок действия ни одного из них еще не истек.

Я отвечу на свой вопрос и начну пост в bitcointalk, чтобы увидеть это более подробно (как транзакции туда попали, что с ними произойдет, если клиенты изменятся и т. д.).