Извините за другой глупый вопрос, но как создается транзакция coinbase? Должен ли я создать что первый, использовать TXID для merkleroot и хэш-блок заголовка желавшему Решаю блок?
Coinbase сделки (AKA Генерация транзакций) создается аналогично тому, как создается любая другая транзакция. Создатель сделки выбирает выходные сигналы, а также один вход. Этот вход имеет "coinbase" Параметр вместо scriptSig. Данные, приведенные в "coinbase" может быть что угодно; она не используется. Bitcoin помещает текущую цель компактного формата и произвольную точность "extraNonce" число там, что увеличивает каждый раз, когда поле Nonce в перетоков заголовка блока.
Горняк (или майнинг) собирает набор операций в произвольном порядке, и вычисляет Merkle корня, который будет использоваться в заголовке блока при попытке решить блок. Если "задавать" сделок содержит только сделку поколения, то корень Merkle будет хэш сделки поколения.
Остальные поля заголовка блока заполняются необходимые данные, а затем шахтер может начать пытаться решить блок. Заголовок блока повторно хэшированные, в то время как значение приращения нонса после каждой попытки, пока одно из следующих значений:
- Хэш заголовка оказывается ниже, чем значение текущей цели. Ура, вы решили заблокировать. Быстро транслировать его как многие другие горнодобывающие и бассейнов, как вы возможно, прежде чем кто-то другой решает блок и ваш становится сиротой!
- Вы получаете решаемый блок от партнера, который использует то же "prev_block" как вы используете. Blockchain расширилась, вам нужно создать новый заголовок блока. Кроме того, возможно, потребуется создать новый набор операций (и, следовательно, новый корень Merkle), если предыдущий блок осуществившего набор операций, которые вы использовали ранее.
- Вы исчерпали все Нонс значения и до сих пор не нашли хеш-значение blockheader, которое ниже, чем текущая цель. Вам нужно изменить что-нибудь в заголовке блока, а затем начните поиск через все Нонс значений снова. Некоторые обычно измененные значения являются временной меткой и корень Merkle. Корень Merkle может быть изменен путем изменения значения входного сигнала операции генерации (extraNonce) или путем обновления набора транзакций используются