Простыми словами что такое Блокчейн

Тут постараюсь объяснить максимально просто, что вообще такое крипта, как она работает, что такое майнинг, кошельки, пулы и т.п., и зачем вот это вот все вообще нужно, для базового понимания. Ну и оставлю ссылки на статьи для более глубокого изучения, если кому-то захочется все же углубиться в тему (:

Блокчейн (это не только крипта) - от англ. block - блок и chain - цепь. сопсна последовательная, непрерывная цепочка блоков информации, выстроенная по определенным правилам. Некий распределенный реестр/база данных. Каждый блок содержит в себе хэш-сумму (https://ru.m.wikipedia.org/wiki/Хеш-сумма) свою и предыдущего блока.
Если проще - представьте себе реальную железную цепь (якорную например), каждое звено - это блок, за ним всегда следует лишь одно такое же звено и на каком бы вы звене ни остановились, вы всегда сможете найти предыдущее, а распределенный - это как в торрентах (https://ru.m.wikipedia.org/wiki/BitTorrent), у кучи народу на компах хранится один и тот же фильм например, и вы качаете его себе со всех компов сразу по p2p (Одноранговая сеть — Википедия) без всякого центрального сервера :wink:


В нашем случае этот самый блокчейн выглядит примерно вот так (см.фото).
В 2008м году, некий Сатоши Накамото (Сатоси Накамото — Википедия) (это псевдоним, реальное имя до сих пор неизвестно, и возможно имя тут было не одно) объединил блокчейн с механизмом который автоматически определял корректность очередного блока (механизм консенсуса), т.е. это позволило блокчейну избавиться от необходимости в каком-то центральном органе/администраторе которому приходилось бы доверять, и блокчейн биткоина стал полностью независимой, самоорганизующейся, распределенной базой данных транзакций.

Блок биткоина содержит в себе заголовок и список транзакций, в заголовке у нас сопсна хэш предыдущего блока, свой хэш и nonce, (Nonce — Википедия) а первой транзакцией всегда идет получение комиссии за предыдущие транзакции, которую получит майнер, если добудет этот блок. Очередность остальных транзакций определяется не только временем их создания, но и комиссией которую мы платим за транзакцию в сети, чем она выше, тем раньше транзакция попадет в блок.

Простыми словами - хочешь чтоб транзакция (например перевод на биржу) прошла быстрей - заплати больше комсы :wink:
Кстати, по этому, нам мацнерам не стоит бояться монеток с ограниченной эмиссией (конечным числом монет), ибо даже когда последняя монетка из награды за блок будет добыта, мамкинг не закончится, мы все еще будем генерировать блоки и получать комиссии за переводы пользователей, а в зависимости от цены монетки, это тоже может быть не плохая доходность :smirk:
Блоки в сети биткоина, как и в других сетях использующих PoW, добываются собственно нами, майнерами, блок считается добытым, и добавляется в блокчейн, когда числовое значение хэша заголовка меньше или равно определенному целевому числу, каждая майнерская нода ищет это значение. Оно регулируется сетью автоматически (сложность сети), дабы держать определенный временной интервал между блоками, потом найденный блок рассылается другим нодам и после проверки на ошибки уже добавляется в цепочку.

Т.к. хэш функция считается необратимой, то кроме как случайным перебором результат нам не поймать. По этому, если простыми словами - майнинг это лотерея, ваша карта производит (допустим) 60мегахэш - 60 миллионов лотерейных билетов в секунду, но шанс, что билет окажется выигрышный зависит от сложности сети, т.е. кол-ва цифр которые должны совпасть в билетике. По этому соло майнинг (на своей ноде, своими мощностями) на популярных монетах, практически не имеет смысла, если ваши мощности малы, ибо билетов там понадобится столько, сколько нулей после единицы вам даже не вообразить. Тут и приходят на помощь пулы (:

Кстати, Proof of Work (англ. доказательство работы) изобрели задолго до Сатоши и вообще крипты, сначала это был простой антиспам, где пользователю (точней его пк), чтоб отправить письмо требовалось произвести определенную работу, вычислить функцию. У обычного пользователя это не отбирало много времени, а вот спам рассылку делало крайне ресурсоемкой и времязатратной (:

Прежде чем перейти к пулам разберемся с возникшими вопросами:
Как же так получается, если майнеров много, мощностей тоже, то ведь есть вероятность (довольно не маленькая), что блок решат одновременно несколько майнеров, кто и как будет решать, чей блок верный, а чьи нет? Ведь такого решателя у нас нет :thinking:

Тут все гениальное реально просто. Итак, механизм консенсуса:
Представьте, что все майнеры это кузнецы и они все вместе куют звенья для одной цепи, цепь должна быть непрерывной и без ответвлений, как решить чье звено приставить к ней? А просто - все кто сковал звено одновременно продолжают ковать с него цепь дальше, а чья окажется длинней, ту и приставим к изначальной! т.е. те кузнецы, кто успел сковать звено одновременно с другим, продолжают ковать СВОЮ цепь дальше, а тот из них, кто успеет наковать более длинную, тот и приставит свое творение к изначальной, и все начнут ковать уже от последнего звена победителя, отправив недокованные на переплавку :wink:

И второй вопрос - если блокчейн хранит только транзакции, то как же мы узнаем у кого сколько монеток? :thinking:
Тут нужно начать издалека, а именно с ключей, их есть два, один приватный (секретный, закрытый) и один публичный (общедоступный, открытый). Ключи эти нужны для создания сопсна адреса монетки из открытого, и подписания транзакции с помощью закрытого. Представьте вашу связку ключей, на ней есть ключ от домофона - это открытый ключ, его можно всем показывать и особо не бояться за сохранность имущества, а есть ключ от квартиры - это уже закрытый ключ, если его всем показывать, его могут скопировать и, однажды ночью, украсть вашу стиральную машинку (:

Итак, из открытого ключа создается адрес монетки в результате определенного преобразования открытого ключа, и таких адресов для одного ключа может быть несколько. Новички часто пугаются, когда у них в кошельке меняется адрес получения, и думают, что их монетки придут не туда, а зря, ведь у одного ключа может быть куча адресов (:


Позже был придуман стандарт BIP39, заменяющий нам приватные ключи одной удобной сидфразой (seed-phrase) - набор слов-пароль который откроет все наши квартиры без всяких ключей (расскажу отдельно в матчасти по кошелькам).

Транзакция - это перевод монеток на определенный адрес, она имеет ссылку на все предыдущие транзакции приведшие к текущему балансу адреса с которого осуществляется транзакция, а достоверность ее подписывается нашим закрытым ключом. Тут есть особенность, что “выходов” транзакции тоже может быть несколько, а главное - нельзя передать в следующей транзакции меньше, чем пришло предыдущей, т.е. если пришло 2 монетки, то и отправить мы сможем только 2, одну не сможем.

Пример: На балансе Андрюши 5 монеток. Их ему перевел Сережа. Решил Андрюша перевести 1 монетку Артему. В транзакции будет ссылка на перевод Сережи - “вход”, подпись закрытым ключом Андрюши, и два “выхода”, один с 1 монеткой на адрес Артема, а второй на адрес Андрюши (самому себе) с 4 монетками сдачи.

Однажды созданную транзакцию невозможно отменить (есть исключения), она сразу попадает в очередь (mempool) согласно приоритету, и рано или поздно попадет в блок, и станет подтвержденной, и из блокчейна уже никогда не исчезнет. По этому всегда проверяйте адрес на который шлете монетки (а в случае с токенами еще и правильность выбора сети) иначе они будут утрачены безвозвратно :warning:

Приоритет транзакций, как мы помним, больше зависит от комиссии, и чем она выше, тем быстрей транзакция попадет в блок. Кстати, комиссия в сети кефира называется “плата за газ”, рассчитывается автоматически в зависимости от загруженности сети (количества транзакций в очереди), как и во многих сетях, но есть сети, позволяющие и ручной ввод желаемой комиссии.
Ну и попавшая в блок транзакция тоже не сразу становится подтвержденной, и воспользоваться прибывшими монетками можно не сразу, а через некоторое кол-во блоков (помним про ветвления и кузнецов :wink:), биржи и прочие сервисы любят много подтверждений.

Итак, путем не хитрых математических операций, легко можно выяснить баланс каждого адреса монетки. Правда все транзакции с/на адрес и его баланс посмотреть может кто угодно, по этому тот же биткоин называют “стеклянным сейфом”. Сатоши советовал использовать для каждой вашей транзакции новый адрес, дабы повысить конфиденциальность, ибо, хоть биток и не содержит никакой информации о пользователе, типа имени, почты, номера телефона и т.п., на деле каждый конкретный адрес не так-то и сложно связать с определенным человеком, особенно всяческим тов.Майорам, отслеживая транзакции от бирж до банковских карт.

Тут и появились анонимные монетки, типа Monero, ZCash, Dash и т.п. Кстати, первым был Dash, правда назывался он сначала xCoin, потом DarkCoin и только потом Dash. В анонимных монетках обычно несколько разных способов скрыть адрес и/или транзакцию, что делает отслеживание конкретного пользователя если и не невозможным, то крайне трудным и практически не имеющим смысла.

Т.к. хэшрейт и сложность сети биткоина росли, майнить его становилось все сложней, и майнеры придумали объединять мощности в пулы.
Пул - это по сути одна общедоступная майнерская нода, только на нее майнит не один майнер, а сразу все кто к этому пулу подключен. Когда она находит блок, то вознаграждение и комиссии за него делятся пропорционально вкладу каждого участника пула. Чтоб этот вклад определить были придуманы шары.

Т.к. майнинг это лотерея, то найти блок может кто угодно, не зависимо от мощности, просто вероятность нахождения будет разной, по этому шара - это та же работа по поиску блока, только сложность сети для него гораздо меньше общей и, чаще всего, вычисляется индивидуально для каждого воркера, согласно его мощностям (еще есть пулы дающие возможность указывать сложность вручную). Т.е. каждый воркер подключенный к пулу по сути ищет блок, но поменьше :wink: И по количеству этих маленьких блоков и вычисляется часть, которую получит каждый майнер от найденного блока сети.

Работает это так: у Андрюши есть ферма из, допустим, 3х видеокарт, он подключается к пулу, тот вычисляет сложность для Андрюшеных мощностей относительно сложности сети, и присылает его картам работу (то самое количество цифр которые должны совпасть чтоб билетик был выигрышным). Сложность для Андрюши пересчитывается при изменении сложности сети и Андрюшеных мощностей. Карты начинают трудиться, и присылать пулу результаты в виде шар, пул считает сколько шар прислал Андрюшин воркер, и раз в определенный период и/или по достижении определенной суммы вознаграждения, платит Андрюше за эти шары на адрес который Андрюша указал при подключении к пулу. Вуаля, Андрюша имеет стабильный доход с майнинга, не имея при этом ангара видеокарт, или не ожидая месяцами, пока три его карты выиграют ему блок монетки. А пул живет за счет того, что таких Андрюш у него очень много, и все вместе они добывают уже целый блок, вознаграждение с которого пул и делит на всех, оставляя себе какой-то процент.

Способов расчета пула с его пользователями очень много, но в основном, в жизни, нам встретятся всего четыре:

SOLO - то же самое, что майнить на своей ноде, только еще и процент отбирают. Способ для удобства, чтоб не поднимать ноду.

PPLNS - англ. Pay Per Last N Shares - оплата за последние N шар. N - у каждого пула на каждой монетке свое. Обычно написано в описании пула на его сайте (пример: у 2miners на кефире N был аж 60000). Метод выгодный для пула тем, что он заплатит только если вы майнили все N шар, не отключаясь в пределах одного блока. Для майнера такой способ выгоден, если майнить одну монетку на одном пуле не перепрыгивая. Способ сильно зависит от удачи пула и его мощностей, ведь если пул блок не поймал (не выиграл лотерею), то и майнер за свою часть работы для этого блока ничего не получит. Но если пул словил много блоков, то награда будет даже больше, чем в других способах.
Хотя в долгосроке вознаграждение у всех способов будет ± одинаковым, даже в соло :wink:

PPS[+] - англ. Pay Per Share - оплата за каждую присланную воркером шару, не зависимо от того, поймал пул блок или нет. Самый не выгодный способ для пулов, позволить себе его могут только большие пулы и чаще всего процент комиссии будет выше, чем на других способах. Зато самый выгодный для майнеров прыгающих по пулам/монеткам в поисках бОльшего профита. Плюс от не плюса отличается только способом распределения комиссий в блоке, на плюсе она распределяется по PPLNS, без плюса чаще всего просто забирается пулом :sweat_smile:

PROP - англ. proportional - как понятно из названия, награда распределяется между участниками пропорционально их мощностям за текущий раунд поиска блока. Т.е. PPS, только в пределах блока. Самый честный и к майнерам и к пулу способ распределения наград.
Лично кот юзает все, кроме соло, а почитать про остальные можно, например тут (Типы вознаграждений майнинг пулов Solo, PROP, PPS, PPLNS, PPS+, SMPPS, ESMPPS, RSMPPS, CPPSRB, FPPS, HBPPS, RBPPS, PPSW, POT, BPM, Puddinpop, Eligius, Geometric, DGM, Triplemining, Score. Что выбрать?).

У Proof of Work на самом деле не мало недостатков - это и высокое потребление электроэнергии практически впустую, ведь майнинг - просто перебор рандомных хэшей и не выполняет никакой полезной функции, кроме генерации лотерейных билетиков (на майнинг битка уходит около миллиона долларов в день затрат на электроэнергию). И “несправедливое” распределение в начале пути блокчейна, когда кто-то смайнивает очень много монет пока сложность сети низка, и о монете мало кто знает.
По этому криптоэнтузиасты начали задумываться над новым алгоритмом продвижения транзакций в блокчейне и в 2011м году был придуман Proof of Stake (доказательство доли/владения). На самом деле, помимо этих двух, есть еще масса всяческих Proof of чего-нибудь, но в жизни нам будут встречаться в основном эти два ну и их комбинация.
PoS решал проблему высокого потребления, но добавлял другие. Тут блок создает не майнер, а валидатор, а шанс создания блока выше у того, у кого больше монет, а не мощностей.

Выглядит это примерно так же как с PoW - есть валидаторская нода (по аналогии с майнерской), она хранит блокчейн и создает блоки, но создаются они не майнингом, а лежащими на ней монетами, чем их больше, тем выше шанс создания блока и соответственно получения за него награды. Тут так же как с пулами для майнинга, пользователи с маленькими мощностями суммами, несут их валидатору, на стэйкинг (депозит, обычно, на определенное время замораживающий средства), тот платит им определенный процент от награды которую получает сам (за блоки), и берет определенный процент за услуги. Казалось бы - идеально, никаких затрат на оборудование, электроэнергию и т.п. купил монеток, закинул в стэйк и получай себе профит, но как обычно есть нюанс… Чтоб получать награды за блок нужна нода, под ноду нужно оборудование уровня сервера в датацентре и очень немаленький баланс монет, иначе шанс создания блока будет просто мизерный. Либо делегирование своих мощностей монет непонятному дяде с сервером.

По скромному мнению пос это Proof of Scam™ и вот почему:

  1. первое и самое главное - пос противоречит самой идее криптовалюты как независимым, не имеющим центральных органов/администрации деньгам. Ибо видеокарта/проц есть у всех, но не думаю, что у каждого дома стоит сервер, со всей побочной инфраструктурой, и есть куча денег для покупки большой доли монет, правда? Так любая пос монета рано или поздно концентрируется в руках узкого круга крупных валидаторов накапливающих монеты в больших количествах, для производства бОльшего количества блоков, а соответственно наград за них.

  2. пос монеты часто попадают под регуляцию государств, ибо крупные валидаторы обязаны исполнять законы и регуляции страны, в которой они находятся, например не подтверждать транзакции из санкционных стран. (вспомните кефир и его валидаторов, которым надо либо исполнять санкции, либо получать по шапке от Виталика)

  3. разработчик имеет огромное влияние на валидаторов. (снова Виталик) и т.п.

Справедливости ради, должен упомянуть, что скамом может быть не только пос, просто у поса вероятность этого гораздо выше, т.к. первоначальное распределение монеток сделать честным в пос сети практически невозможно (вспомните тот же тон, в котором львиную часть монеток просто раздали разрабам и связанным с ними людям, хоть те и раздавали часть за некий аналог майнинга в начале, но бОльшая часть все же осела на их кошельках).
В любом случае, каждый проект, не важно на пов он, на пос или на обоих сразу нужно внимательно изучать, прежде чем иметь с ним дело. Ведь и на пов бывают монеты с огромным премайном (первоначальным распределением монет) в пользу разработчиков (например, тот же кефир), или обязательной комиссией с каждого блока в их же пользу, что делает монету совсем не децентрализованной и подконтрольной узкому кругу людей :warning:
Если и иметь дело с подобными монетами, то только ради спекуляций/извлечения профита без долгосрочных с ними отношений.

Еще у блокчейна есть некие дополнительные слои. Основной блокчейн это L1 - Layer 1 - англ. первый слой.
Каждый из этих слоев призван решать какую-либо из проблем типа:
• L2 - скорость транзакций, масштабируемость, смарт контракты (о них ниже).
• L3 - всякие децентрализованные приложения, работающие на блокчейне. (DeFi, GameFi и вот это вот все)
• L0 - кроссчейн. Обеспечение обмена транзакциями между разными сетями.
Почитать подробней можно, например вот тут (Что такое слои блокчейна L0, L1, L2 и L3 и зачем они нужны / Habr).

И смарт контракты - это, если простыми словами, некий договор, соблюдение пунктов и выполнение которого контролируется автоматически. Без участия каких-либо администраторов, нотариусов, поверенных, понятых и пр. :wink: Подробней - например тут (Смарт-контракт — Википедия).

Ну и все, ребят, теперь мы знаем что такое блокчейн и с чем его едят!