Я хотел бы знать, есть ли транзакции, которые могут иметь место только в какой-то заранее определенный момент. В принципе должна быть возможность использовать параметр nLockTime для ожидания определенного номера блока:
https://en.bitcoin.it/wiki/Спецификация_протокола#tx
Это может быть полезно в некоторых контрактах, но замена пока не поддерживается:
Почему не поддерживается замена транзакций?
В любом случае кажется, что в принципе можно создать простую незаменимую транзакцию со временем ожидания.
Есть ли пример такой транзакции в блокчейне? Если нет, будет ли он принят стандартным клиентом или нужно будет убедить одного майнера включить его в один из своих блоков.
ОБНОВЛЕНИЕ: Открыто обсуждение на https://bitcointalk.org/index.php?topic=131443.0 для дальнейшего изучения.
Решено. Вы можете подготовить транзакции со временем ожидания, и стандартный клиент их примет.
Вы можете проверить некоторые детали: 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, чтобы увидеть это более подробно (как транзакции туда попали, что с ними произойдет, если клиенты изменятся и т. д.).
пользователь8792