jabbaxatt
Добрый модератор
- Регистрация
- 21 Янв 2009
- Сообщения
- 902
- Реакции
- 432
- Автор темы
- #1
Стало интересно - решил посмотреть что там внутри.
Т.к. по английски понимаю плохо, и в C++ не шарю, буду тут писать и задавать вопросы в стиле "правильно ли я понял".
Ну и собирать ссылки на примеры(исходники) реализации и на статьи по русски.
Начнём.
Правильно ли я понял что майнеры занимаются следующим: Собирают в одну строку
х = хеш предыдущего подтверждённого блока + текущие транзакции требующие подтверждения и
считают двойной sha256, т.е.
sha256(sha256(x+nonce)).
Где
nonce - изменяемое число в конце, которое увеличивается на 1 до тех пор пока рассчитываемый двойной хеш нас не устроит(т.е. не окажется меньше текущей установленной цели).
Что хочу понять
1) Как точно формируется этот самый блок x (в каком порядке и что туда включается) и какого он примерно размера. Какие транзакции включаются в этот блок и в каком виде? В общем нужен стандарт формирования этого x?
2) По идее у всех майнеров эти блоки должны быть чуть чуть разные, что-бы не считать одно и тоже. За счёт чего эта разница достигается? Разный набор транзакций в блоке или туда пихается какая-то собственная инфа связанная с нашим кошельком или ключём?
3) nonce имеет конечную длинну 32 бита. Допустим мы их все перебрали и нужного хеша не нашли. Что тогда? Пишут что тогда добавляется "техническая транзакция" и всё начитается заново. Но что это за "техническая транзакция" откуда берётся, и куда добавляется авторы статей не пишут.
4) "Хеш меньше установленного значения" это действительно хеш sha256(sha256(x+nonce)) с нулями в начале? Типа 00000000000001c21dbf4715d5da1a288061faa21e950dd8df6ae25c8b55d868
Или там что-то где-то переворачивается?
Вопросов ещё куча. Если кто копал или кому просто интересно - предлагаю присоединиться к обсуждению. Всем дающим понятные, подробные и правильные пояснения - "спасибки" от меня гарантирую
Т.к. по английски понимаю плохо, и в C++ не шарю, буду тут писать и задавать вопросы в стиле "правильно ли я понял".
Ну и собирать ссылки на примеры(исходники) реализации и на статьи по русски.
Начнём.
Правильно ли я понял что майнеры занимаются следующим: Собирают в одну строку
х = хеш предыдущего подтверждённого блока + текущие транзакции требующие подтверждения и
считают двойной sha256, т.е.
sha256(sha256(x+nonce)).
Где
nonce - изменяемое число в конце, которое увеличивается на 1 до тех пор пока рассчитываемый двойной хеш нас не устроит(т.е. не окажется меньше текущей установленной цели).
Что хочу понять
1) Как точно формируется этот самый блок x (в каком порядке и что туда включается) и какого он примерно размера. Какие транзакции включаются в этот блок и в каком виде? В общем нужен стандарт формирования этого x?
2) По идее у всех майнеров эти блоки должны быть чуть чуть разные, что-бы не считать одно и тоже. За счёт чего эта разница достигается? Разный набор транзакций в блоке или туда пихается какая-то собственная инфа связанная с нашим кошельком или ключём?
3) nonce имеет конечную длинну 32 бита. Допустим мы их все перебрали и нужного хеша не нашли. Что тогда? Пишут что тогда добавляется "техническая транзакция" и всё начитается заново. Но что это за "техническая транзакция" откуда берётся, и куда добавляется авторы статей не пишут.
4) "Хеш меньше установленного значения" это действительно хеш sha256(sha256(x+nonce)) с нулями в начале? Типа 00000000000001c21dbf4715d5da1a288061faa21e950dd8df6ae25c8b55d868
Или там что-то где-то переворачивается?
Вопросов ещё куча. Если кто копал или кому просто интересно - предлагаю присоединиться к обсуждению. Всем дающим понятные, подробные и правильные пояснения - "спасибки" от меня гарантирую
Последнее редактирование: