max_andriyahov попросил меня тут давеча налабать пост по мотивам срача в комментах. Держите, чо.
АХТУНГ!
В этом посте я не буду разжевывать криптопримитивы, такие как хэширование, электронная подпись, асимметричные ключи - это отдельная тема базовой образованности для понимания всего чего бы то ни было с приставкой "крипто-", оно прекрасно гуглится и понимается, ежели у вас есть мосх.
Собственно, нынче очередная волна хайпа всякой херни с приставкой "крипто-". Криптовалюты, криптоинвестиции, криптоцивилизации. На чем не стесняются спекулировать всякие мутные личности.
Оставим спекулянтов в стороне, и поговорим о технических вопросах, чтобы у читателя сложилось понимание - чем совы криптоартефакты являются, чем - нет, чем - не могут, и какие вещи принципиально не могут сочетаться с приставками "крипто-" и "блокчейн-". Некоторые моменты сознательно упрощены и не детализированы. И относятся в основном именно к биткоину.
И для начала небольшой экскурс в историю предмета.
Собственно, криптовалютные расчеты как таковые - лишь форма безнала. Фантики-монетки, торгуемые по спекулятивной цене к выбранной валюте, или к другим фантикам.
Чем же не устраивал имеющийся безнал, и зачем нужно было вообще городить огород?
Всё достаточно просто - у существующих систем безналичного расчета во-первых имеется централизованное управление. Ну там банки, процессинговые центры, казначейства - и вот это всё. Они во-первых - могут пидорнуть ваш перевод, или вообще забрать ваше бабло, если им покажется, что вы какой-то левый хуй, и налик, который вы принесли в чемодане в отделение - попахивает кровью эфиопских младенцев и колумбийским кокаином.
Во-вторых - ввиду монополии они с вас стригут нехилые проценты за пересыл кучки байтов, удостоверяющих переход права собственности на стопочку денег от персоны А к персоне Б.
То есть напрашивается резонный вывод - нужна автоматизированная система, свободная от решений кожаных ублюдков на ход переводов, с минимальными издержками на перевод, с возможностью плодить неограниченное количество счетов/кошельков, и с высокой скоростью. Желательно - анонимная.
Забегая вперед - скажу, что последние два пункта слиты, и реализуются при помощи высокооктановых высокоматановых костылей.
Еще одно существенное отличие криптовалют от банкнот - она, криптовалюта то бишь, больше похожа на золото: ее может добыть (намайнить) каждый. Нету монетного двора, который чеканит фантики.
И, собственно - нахуа тут криптография?
А криптография собственно как и во все времена - защищает от наебок. От накруток, от подделок. Нельзя просто так взять и нарисовать себе стопицот бабла на счету. Дебил с кредитом контрольная сумма не сойдется.
"... - А унутре у ей неонка. И думатель."
Сопцна, хоть и выделенного центра чеканки и учета нету - как-то данные о происшествиях транзакциях хранить то надо. Все просто. Каждый узел (нода) сети биткоин хранит и актуализирует свою копию истории в виде структуры называемой блокчейном. Когда вы запускаете биткоин-кошелек (или другой кошелек из криптовалют первого поколения - про поколения будет дальше) - вы, собственно, запускаете полный узел сети. Которому для начала работы надо скачать весь блокчейн (а сейчас это полтерабайта), а дальше - поддерживать в актуальном состоянии. И чем реже вы кошелек открываете для операций - тем дольше ему каждый раз синхронизироваться оттуда и до обеда.
Хранит блокчейн как я уже говорил - историю переводов: от кого, кому, сколько. Но не в виде "от васе для пети", нет, вместо имен - достаточно длинные цифро-буквенные комбинации - адреса. Которых может быть туева хуча - хоть на каждый входящий перевод новый создавайте.
Транзакции группируются в блоки. Для каждого блока считается контрольная сумма (хэш). И в следующем блоке ставится хэш предыдущего для связи назад по истории. Получается однонаправленный (односвязный) список, из прошлого в будущее. И, как и везде - для того, чтобы посчитать баланс адреса надо прокрутить всю его историю. Это еще одна причина хранения полного блокчейна.
Возникает два резонных вопроса - как защитить историю от подделки, и вообще - как мотивировать держателей нод поддерживать сеть? Обе этих проблемы решает майнинг.
Вкратце - нельзя просто так поназаписывать левых транзакций в блоки (например на себя написать переводов левых) и приклеить их в историю. Для того, чтобы узлу доказать, что он действительно поработал над включением транзакций в блок - значение хэша должно соответствовать некоторому предопределенному условию. Например, иметь некоторое число лидирующих нулей. Число, обозначающее критерий называется "сложностью". И задача подбора хэш заданной сложности не решается никак, кроме подбора перебором. Например, 32 нулевых бит подряд в 256-битном хэше - это уже достаточно сложно. Так как транзакции и некоторые метаданные (дата фиксации блока) у нас не подлежат изменению - мы можем менять только одно поле в блоке, оставленное как раз под случайное значение. Тот узел, который находит подходящее значение первым - вписывает в блок на себя энное число монеток. Это и есть майнинг. Остальные узлы при получении из сети валидного блока прекращают его подбор. Вся эта сложная херь называется "майнингом на доказательстве работы" (proof-of-work). То есть вдумайтесь: сотни нефти киловатт электричества жгутся для того, чтобы найти сраную случайную чиселку.
"- Бен? Бен, это Данила. Ай нид хелп!"
Сопцна, из вышеописанных свойств блокчейна вытекает две фундаментальных его же проблемы.
1. Проблема с анонимностью и приватностью. Ибо блокчейн создан специально для того, чтобы написанное пером никаким топором, кроме как уничтожением более чем 90% узлов сети вырубить нельзя было. Всё, что в блокчейн попало - в нем же и осталось. И при достаточно упорном расследовании связать конкретные адреса и транзакции с конкретным Васей - писоф кейк.
2. Скорость. Майнинг требует времени. И по сравнению с централизованной обработкой платежей в Visa/Mastercard - разница отличается на порядки. На 3-4 порядка - точно. То есть за то время, что мерзкая централизованная банкстерская Visa прогонит 10000 платежей - Bitcoin прогонит один. И еще раз - сотни киловатт электричества жгутся для того, чтобы находить случайные чиселки пиздец как медленно.
Итак, мы сожгли пиздец как дохера электричества, нашли себе монетку. Точнее несколько. Примерно каждые 4 года размер вознаграждения уполовинивается (халвинг). Изначально было 50, потом 25, потом 12.5 и так далее. После пятого халвинга за майнинг будут давать ровно хуй. 0.00 биткоина. Ровно. Сеть будет держаться на комиссиях, кои кратно возрастут. Сделано это все, как и ограничение эмиссии (21 млн, 18 уже нарыто) для нивелирования инфляции. К слову, любимый некоторыми Ethereum в рот ебал ограничения по эмиссии и будет добываться пока Виталик Бутерин не решит, что хватит. Так вот, когда вам будут говорить, что биткоин - это фантик, который ничем не обеспечен - смело ссыте этим людям в глаза. Потому что всратое на майнинг и охлаждение электричество - стоит денег.
К слову об охлаждении. Двухъюнитовая числодробилка Antminer T17 Pro на 2.5 кВт электрической мощности прогревает кухню на 15 квадратов с 18 до 40 градусов примерно за 10 минут работы. Откуда знаю? Настраивал. И орет как авиадвигатель - четыре вентилятора, каждый примерно на 6000 оборотов в минуту. Это я к тому, что дома биток майнить не пытайтесь даже - шумно и горячо. Можете сами погореть и соседей спалить.
Отсюда, кстати, вытекают третья и четвертая проблемы:
3. Порог входа в майнинг биткоина серьезно превышает порог входа в многие другие криптовалюты. Потому что майнинговые установки стоят очень негуманных денег и биллятся в тех самых биткоинах. И на складе они не лежнем лежат, а майнят на благо производителя. Так что вы в любом случае получите б/у. от $3000 до $15000 за юнит. Дороже только недавняя Chia, которую добывают на SSD/HDD. Там для получения сколько-нибудь существенной отбивки надо столько вложить, что проще основать какой-нибудь фонд.
4. Следствие. Плохая децентрализованность и тренд к олигополии в сети. То бишь большинство узлов находятся под контролем 5-6 основных майнинговых пулов. А производство специализированных микросхем для майнинга (ASIC-ов) вообще - в руках трех компаний (Bitmain, BitFury, и еще кто-то).
Проблемы отцов и детей
Итак, настала пора поговорить о поколениях криптовалюты.
1 поколение. Биткоин и некоторые альткоины (Litecoin, DASH, Doge), которые с небольшими изменениями в коде использовали те же криптоалгоритмы. Тот же proof-of-work. Litecoin и DASH к слову поменяли алгоритмы хэширования, чтобы сделать свои криптовалюты ASIC-устойчивыми, держат сложность достаточно низкой, чтобы переводы проезжали приемлемое время порядка минут. Dash еще и озаботился решением проблемы приватности переводов - вместо одной транзакции делается N на ту же сумму итого, которые хитрым образом запутываются. Так работает любой коинмиксер, просто в Dash он встроен.
2 поколение. Сюда можно отнести помянутый Ethereum. И если Bitcoin подразумевался самоценным, то Ethereum играет на том, что выполняет программный код на блокчейне - так называемые "смарт-контракты". То есть приход транзакции в узел триггерит выполнение некоего набора инструкций и опять же изменение блокчейна. И чтобы провалидировать эфириумный блокчейн - его надо не только скачать и прочитать, но и выполнить. К слову, всякие "бузкоины" и другие говнокоины, рядом с которыми употребляется модное слово "ICO" (Initial Coin Offering - начальное распределение монет) - появились именно благодаря эфириуму и его стандарту ERC-20. Вкратце - любой желающий может прикупить эфира, скопипастить референсный код ERC-20, поменяв несколько констант и использовать свои говномонетки, например, для расчетов в игре, оживив их заливом купленного эфира. Это породило такое явление как стейблкоины (stablecoins). Монеты, торгуемые жестко 1:1 к конкретной валюте их операторами. Например, USDC - криптоаналог доллара. С учетом того, что эфириум ездит быстрее битка (в среднем - минута) - охуенное средство для расчетов мимо кассы. И, да, потому что волатильность заебала всех, кроме трейдеров.
К слову, уже в этом поколении вам необязательно поднимать полный узел сети, достаточно иметь "легкий" кошелек, управляющий криптоключами, и умеющий общаться с другими нодами (мастер-нодами) по API. Это явление притащило крипту на мобильные.
Алгоритм хэширования эфириума достаточно стойкий к ASIC-ам ввиду приличного потребления памяти, поэтому его добывают на видеокартах. Когда NVidia анонсировала 30хх серию, но не смогла обеспечить рынок поставками - перекупы прочухали тему и стали перепродавать видюхи майнерам задорого. Типичный эфириумный риг - это алюминиевая рама с деревяшкой внизу, к которой прикручена материнская плата. А на раме торчит 6-8 видеокарт. "На пивас" можно майнить парочкой GTX1080Ti/RTX2080Ti. К слову, в свежих 30хх майнинг именно эфириума пидорнули вдвое искусственно. На аппаратном уровне - VBIOS+ключи в GPU.
3 поколение. Монеты, которые появились позже, и изначально, by design решали проблемы граблей, на которые наступили до них. И попытались привнести другие ценные вещи. Ну, потому что очередной "клон биткоина" просто так никому не нужен.
Namecoin. Продвигает концепцию распределенного DNS - за монетки покупаются имена в зоне .bit. Для них, аналогично tor-овским .onion нужен свой резолвер, но в целом спрос есть.
Sia, Storj. Хранение данных на блокчейне. Там все достаточно неторопливо во всех смыслах и мутно в плане технической концепции - но это пока работает.
Beam. Жесткая анонимность. В блокчейне не хранится ничего, кроме "доказательства перевода": если ты проебал локальную базу данных - пиздец твоему кошельку. Зато быстро и анонимно.
Tron. Китайский, цельнотянутый клон эфириума. К слову, благодаря довольно детальной спецификации и наличию референсного кода - клоны эфириума для корпоративного и частного использования кто только не клепал. Но вот Tron - это вполне себе публичная криптовалюта, только не proof-of-work, а proof-of-stake (доказательство владения долей) - владелец куска криптовалюты объемом больше N монеток может подписать своими ключами некоторое количество транзакций, пропорциональное N в сутки. Это экономит энергию и ускоряет. В среднем - минута, да. Этим и живет.
4 поколение.
Сюда я отношу Chia - ее даже не майнят, ее плоттят. Это вам домашнее задание, почитайте, разберитесь. Лично мое мнение - не взлетит.
Совы - не то ...
И вот мы добрались до заключения. Собственно, то, ради чего вся статья и затевалась.
Когда вам впаривают что-то с "крипто-" и "блокчейн-" вы должны примерить вооон те критерии выше на концепцию предлагаемого вам продукта:
- как отразится на работе низкая скорость обработки транзакций?
- нужно ли хранить вечно публично доступные данные? как это отразится на юзабилити? как к этому отнесутся конечные пользователи?
- нужно ли майнить (proof of work) или закупать дохренилион монеток (proof of stake), чтобы зарабатывать на этом?
- есть ли уже коины, которые реализуют аналогичную концепцию?
- нельзя ли добиться выполнения сформулированной для концепта задачи реализацией в виде смарт-контракта?
- насколько ASIC-резистентны применяемые криптоалгоритмы?
то есть условный git на блокчейне - реален и осмыслен. а VPN на блокчейне - нет, ибо ему нужна скорость и минимум метаданных, текущих наружу.