На прошлых встречах мы рассматривали:
- Блокчейн как коллективный бухгалтер
- Хэш функция как криптографическая основа безопасности сети
- Транзакции, адреса, кошельки
Тема на сегодня: Майнинг и эмиссия.
Начнем, как всегда, с небольшого повторения. Итак.
Блокчейн - это коллективный бухгалтер, который сообща контролирует транзакции в сети. Каждая страница книги учета называется блок, все блоки связаны между собой с помощью результата вычисления хэш-функции, которая не позволяет заменить, изменить или подделать совершенные транзакции.
Транзакции - это передача прав владения биткоином от одного человека, к другому. Для передачи биткоина человеку, необходимо сообщить сети бухгалтеров сообщение с адресом получателя, подписав его приватными и публичными ключами, которые хранятся в вашем кошельке. После получения такого сообщения, бухгалтера вставляют задание на перевод в свой текущий лист (блок), а после полного его формирования, начинается процесс майнинга.
Майнинг можно образно представить себе как процесс добычи золота, где золото - это биткоины. Компьютер каждого майнера усердно трудится, вкладывая вычислительные мощности и решая математическую задачу, которая принесет ему награду.
Что за задача?
Как мы помним, каждый новый блок содержит в себе результат вычисления хэш суммы предыдущего блока, все новые транзакции, и.. случайное число. Эта информация записывается в заголовке блока и передается следующему блоку, связывая все блоки между собой.
Новый Блок = Транзакции + Хэш сумма предыдущего блока + случайное число
Для того, чтобы включить новую страницу в общую книгу учета, получив за это награду, бухгалтера играют в игру. Они стараются подобрать такое случайное число, чтобы результат хэш-суммы начинался с определенного количества нулей.
Этот процесс и называется “майнинг”:
Например, это блок:
1824B9ADF09908222CF65069FDE226D32F165B3CF71B7AA0039FDFEF75EAA61610909EBFFBAC023480FC87FCF640C4A
009B82C4A6D25A0F4B8A732AE54EF733E792681137BA378577DFDC2732D192DAF323966EAD4ADC9635D7A12EDD50E34
9F660622D186AF3C03BF7D265F2AA7EB125056F4BF45BE519E8B22B845B28065110000006400000142E5D667CB01CEE
EDD0AC15EC4C491819A99030BD5FEF7CD2B469F2B90BA13D7981EDCD0708353D13390B8564F496C44FAC2777B0AF79D
C94CBF36D0CC0F047E807889F34C4DC5FEB724699C257391F84F3DDD70B84F841D115F4EFEAF4E58779042F35257E5C
035046037DE740718D199A8F06AD7A58E37CCCD4CC5E95295DCC2C5F3C70847BD59FA57BCC5FF4B208F93948FCFD763
EC1E5C85B61C43EB64B77A9F53B28785D7DE2335333003260A0839D53927976751A8D8967B2BB325909D86E82BC4125
2A28ECF6F0E7476BB99B29585EB0E75410000
Перебор чисел при вычислении хэша блока: 1, 2, 3, 4, 5, ... 18837473283847 и БАЦ!
00000000000000008ACF935A8E3E453AC538706F560155943C6B0A77E5F5FCA7939D5FFE589676A6B3CD7AC78845786C50449D1A6F
91003EDCA7B5D8B12AC36CCA36A00844A
Мы нашли блок!! и заработали 12.5 биткоинов :-))
Количество нулей - это “сложность” сети, которая вычисляется динамически в зависимости от общей вычислительной мощности сети так, чтобы среднее время решения задачи было ~10 минут. Сеть сама себя регулирует, т.е. даже если все компьютеры сети отключатся, а останется только один, то через некоторое время (когда сложность скорректируется), он сможет решить задачу и осуществить транзакцию.
Подобрав случайное число, майнер транслирует информацию в сеть, в то время, как другие бухгалтера продолжают решать свою задачу по перебору. Если они ее решат (это значит, что в блоке нет поддельных транзакций), цепочка страниц продолжит развиваться, а майнер, первым добывший блок, получит награду.
Что произойдет, если два майнера решат задачу одновременно?
Такое случается не часто, но бывает. В таком случае, награду по итогу получит тот майнер, чья цепочка будет развиваться быстрее. Медленная же цепочка - умрет и аннулируется, а все входящие туда транзакции, будут вновь пересчитаны и включены в параллельную ветку блоков. Считается, что если транзакция еще не имеет трех подтверждений, то цепочка все еще может быть аннулирована.
Развивается та цепочка блоков, которая быстрее
Какую награду получает майнер?
Сатоши Накомото создал алгоритм биткоина так, что каждые 4 года размер вознаграждения за найденный блок уменьшается в 2 раза. Биткоин был запущен в 2008 году и за каждый найденный блок платил 50 монет. Сегодня, в 2016 году, награда была снижена уже дважды и будет продолжать свое снижение, пока майнеры не добудут весь объем биткоинов - их там 21 миллион. Выглядит этот процесс так:
Что произойдет, когда эмиссия завершится?
Для того, чтобы поддерживать финансовый интерес к майнингу, в биткоине введена комиссия за транзакцию, которая по тем же принципам будет (и уже) распределяться среди майнеров-победителей. Когда эмиссия биткоина завершится, он будет.. другим, но - будет. :-)
Вот так, в общих чертах, и работает блокчейн. На этом начальный уровень школы блокчейн, я считаю завершенным. Теперь требуется переосмысление и подготовка к запуску Академии блокчейна, где будут рассматриваться технические аспекты сети ГОЛОС.
Даже я засветился на превью=) как насчет сделать отдельный урок по смарт-контрактам?
Сделаем!)
поддерживаю, тоже было бы интересно про смарт-контракты
А мне нравится рисование, слайды не так хорошо заходят, потом в голове так же схему и вырисовываешь...
А я все про сидноды свои . :)
Вот, насколько я это понимаю, открыть ноду для всеобщего пользования - это хорошо, "для людей". Но не начинает ли нода из-за этого майнить медленнее? К ней же все подключаются... Какой вообще стимул у кого-то давать доступ к ноде своей?
Стимул - быть полезным и хорошим делегатом) Для этого сервер нужен стабильный, у меня вот нет такого, проплаченного на долго вперед.. так бы сделал) Там же айпишник будет, он меняться не должен..
Чтобы одна нода не мешала другой (на всякий случай), и разворачиваются несколько нод.. то был твой первый вопрос в предыдущем посте ;-)
А если без делегатов, просто POS или POW, тогда стимул какой? Быть хорошим и полезным человеком? :)
И Ты не сказал, начинает ли майнить хуже, если давать доступ?
Да, в биткоине тоже свои ноды есть, которые держатся участниками их сообщества. Они выполняют связующую функцию, предоставляя людям, подключающимся к сети, адреса других нод. Т.е. все ноды так или иначе связаны, просто сиды - это ядра с постоянными, открытыми адресами.
Майнить шибко хуже не будет, но чтобы не мешать делегатам делегатствовать (ну вдруг чего), делегатские машины отграждаются от любых других функций.
Спасибо! :)