Pavel Gulchouck (gul_kiev) wrote,
Pavel Gulchouck
gul_kiev

Categories:

Фейковые криптовалюты

В многочисленных популярных роликах и текстах, объясняющих принципы работы криптовалют, это объяснение делается на примере Bitcoin - первой из криптовалют. Это на самом деле чистая и понятная реализация принципов, необходимых для криптовалюты: открытость истории транзакций, возможность проверки источника денег по цепочке, понятные правила появления денег, понятные правила создания новых транзакций. Новые монеты появляются только в результате майнинга новых блоков, и награда за майнинг постепенно снижается по логарифмическому закону, в результате чего общая сумма выпущеных биткоинов никогда не превысит лимита (21 миллион). Любая трата денег (вход транзакции) должна соответствовать выходу другой (более ранней) транзакции, деньги не могут появиться ниоткуда. Для траты нужно подписать транзакцию приватным ключом. Простой скриптовый язык позволяет делать multisig и всякие другие полезные вещи, в том числе и создавать новые валюты (токены) на базе биткоинового блокчейна (omni layer, так живёт USDT). Центрального узла нет, новый блок определяется консенсусом всех узлов - при наличии нескольких вариантов они принимают ту ветку, в которой сделано максимальное количество вычислений, это формальный критерий, не допускающий разночтений. Собственный узел может запустить любой пользователь, исходный код открыт.

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

Это закономерно привело к появлению муляжей криптовалют, которые якобы используют те же технологии, но при этом дают преференции их создателям, т.е. не такие уж децентрализованные. Для пользователей всё равно, а создателям профит. Самый распространённый из таких муляжей - Ethereum.

В нулевом блоке эфира роздано 72_009_995 Ether на 8903 адреса, это больше, чем всего получено наград за майнинг блоков (раньше было 5 Ether за блок, потом сделали 3 Ether) за всё время. Ещё раз: более половины всего эфира, который сейчас есть в обороте, был роздан в нулевом блоке при старте этой криптовалюты, а меньшая часть появилась в результате майнинга блоков. Попробуйте нагуглить этот факт в описании Ethereum - скорее всего ничего не выйдет, он не афишируется, и даже скрывается.
Стандартная общедоступная эфирная нода geth эти стартовые транзакции не показывает, как будто их нет. Говорит, что нулевой блок пустой.
Эксплореры либо показывают их существование, но не дают смотреть подробности (etherscan.io, blockchair.com), либо вообще их не показывают, в результате чего история транзакций по адресу выглядит странно: только траты, без прихода, но положительный или нулевой итоговый баланс.
Наличие такого мухлежа в стартовом блоке привело к тому, что эта криптовалюта в принципе не могла быть столь же открытой и прозрачной, как биткоин, иначе эта история была бы сразу всем видна. И если в биткоине для определения баланса адреса достаточно посчитать сумму utxo (неизрасходованных выходов транзакций), то в эфире это намного сложнее: нужно просматривать все транзакции по адресу (траты и поступления), но и этого недостаточно: баланс может измениться в результате работы смартконтракта ("internal transactions"), а это бинарный код в теле транзакции. В результате, даже запустив собственную ноду, я не могу посмотреть историю операций по какому-то адресу (даже моему собственному), мне для этого нужно обращаться к сторонним сайтам, работающим на собственном софте, т.е. доверять им: "There's not currently any way to do this using the web3 API. [...] Blockchain explorers like etherscan obtain internal transactions by running a modified node with an instrumented EVM" (1); "The trouble I see with this is that this centralizes that data. If I create that data, how you know I didn't fake it? I've been trying to figure out a way to both index it and decentralize the 'indexing calculation.' I know how to decentralize the storage (IPFS), but not how to decentralize the indexing calculation. (2).

Эфирные сматрконтракты - отдельная песня. По сути это ничем не отличается от выполнения какого-то бинарного файла на вашем компьютере, его код не открыт, а логика работы неизвестна. То, что он находится в блокчейне, а не на чьём-то сайте, ни на что принципиально не влияет, кроме психологии пользователей, доверяющих слову "блокчейн". Что, собственно, и требуется. Стандарт ERC20 определяет "узнаваемые" сигнатуры функций, вроде "передать столько-то токенов от такого-то адреса такому-то", но ERC20 не регламентирует, какие ещё функции могут быть у этого смартконтракта (например, "забрать все токены у всех пользователей").
Поскольку чистота и изящество технической реализации не являлись целью при создании эфира, эти качества по сравнению с биткоином в эфире сильно пострадали. Приведу несколько примеров.
У транзации bitcoin может быть несколько входов и несколько выходов. В результате я могу, например, давать каждому своему контрагенту отдельный адрес для перечисления мне денег, смотреть, когда кто-то из них заплатил, а когда мне самому нужно заплатить - я могу платить с нескольких этих адресов одновременно. А для сдачи сгенерировать какой-то новый адрес. В результате получается определённая степень анонимности: тот, кому я заплатил, не знает, сколько у меня всего денег на других адресах, сколько клиентов, которым я плачу и т.п. Прослеживание истории каждого из входов транзакции, в которой он получил от меня деньги, не даст ему никакой интересной информации.
В эфире у транзакции один вход и один выход. Чтобы заплатить кому-то, мне нужно сначала собрать достаточно денег на одном своём адресе, а потом с него выплатить, причём сдача останется там же. История транзакций по адресу, с которого человек получил от меня платёж, даст много информации обо мне. Кроме того, проводя платёж, я помещаю в блокчейн публичный ключ для этого адреса. Получение приватного ключа по публичному в данный момент малореально, но с появлением квантовых компьютеров всё может быть. У биткоина, как я говорил, сдача идёт на новый адрес (именно так рекомендуют делать), и на тех адресах, с которых произошёл платёж, т.е. публичные ключи которых опубликованы в блокчейне, уже ничего нет, взламывать нечего.
Правила появления новых монет в биткоине заложены со старта - заранее определено, начиная с каких блоков будет производиться "халвинг" (уменьшение награды за блок вдвое), таким образом в коде заложено, сколько всего будет выпущено биткоинов. В эфире ситуация иная: размер премии прописан константой в коде, а код нужно регулярно обновлять, и некоторые обновления изменяют размер награды. Изменение алгоритма ноды с потерей совместимости в биткоине приводит к форку, по сути создаёт другую криптовалюту. Потому что покупая биткоин, я выражаю доверие алгоритму и стартовому блоку (цепочке). В эфире это стандартный процесс "апгрейда", который должны регулярно применять все узлы, иначе они попросту выпадут из сети, потеряв совместимость. Покупая эфир сейчас, я не знаю, по какому протоколу эта валюта будет работать завтра, т.е. я выражаю доверие не открытому протоколу, алгоритму и стартовому блоку, а конкретным людям, которые будут выпускать обновления, никакой децентрализации в этом опять нет.
Этот список можно продолжать долго, но это уже не так важно. Важно, что Ethereum - это муляж криптовалюты, который паразитирует на идеях децентрализации, распределённости и открытости, реализованных в Bitcoin, но извративший эти идеи ради бизнес-интересов создателей этой валюты.

Ripple, Tron

У них суть похожая. Декларируется децентрализация, распределённость, все дела. Можно ли поднять свою ноду - да, без проблем, вот исходники, любой желающий может поднять.
Но при ближайшем рассмотрении оказывается, что эта нода не участвует в консенсусе, а только получает информацию о транзакциях от других узлов и отправляет другим узлам свои транзакции. Если покопаться глубже, можно найти информацию о том, что поднять майнящую ноду можно, для этого нужно взять другой софт, заплатить кому-то сколько-то денег и подать заявку на рассмотрение. То есть, эти валюты не являются децентрализованными ни административно, ни технически (новый майнящий узел подключается к сети вручную). Вопрос о том, как происходит распределение денег, в такой ситуации уже неважен: понятно, что в любом случае полный контроль за появлением монет, как и за механизмами консенсуса, находится в частных руках.
Такой отказ от децентрализации принципиально упрощает вопросы консенсуса - новый блок можно принимать хоть простым большинством узлов без дорогостоящих вычислений подписи в proof-of-work, а вопрос генерации новых монет и вовсе отпадает - они все изначально принадлежат владельцу валюты и эмитируются только им (или доверенными узлами, что по сути то же самое).

В угоду бизнесу произошёл сдвиг терминологии. Изначально криптовалютами назывались только "настоящие" децентрализованные валюты с полностью открытым и равномерным появлением новых монет, как в Bitcoin, Litecoin и подобных. Потом криптовалютой стали называть Ethereum, который, впрочем, скрывал "особенности" стартовой эмиссии. Дальше - криптовалютой стали смартконтрактные токены, живующие в эфирном блокчейне, даже с закрытым кодом (т.е. с неизвестными правилами). Потом гордое название "криптовалюта" стали носить любые валюты, использующие блокчейн, децентрализация перестала быть обязательной. И, наконец, блокчейн тоже перестал быть необходим: в Ripple его и нет, а просто по сути любые электронные деньги стали называться криптовалютой.

Отдельно стоит упомянуть stablecoins вроде USDT. Они тоже существуют в распределённом блокчейне, как будто настоящие криптовалюты, а отличие их в том, что существует владелец, который может создавать новые монеты в произвольном количестве. Этот владелец декларирует, что выпускает новые монеты ровно в таком количестве, сколько ему заплатили настоящих денег, эти настоящие деньги хранит в сейфе, и таким образом гарантирует, что эти монеты всегда можно будет продать по курсу 1:1 к USD. Пользователям предсказуемость курса удобнее, чем высокая волатильность биткоина, а магические слова "криптовалюта" и "блокчейн" вызывают больше доверия, чем просто чьи-то электронные деньги вроде perfectmoney. Тут достаточно очевидно, что блокчейн в данном случае - не более чем открытый реестр, а владелец имеет полный контроль над валютой. Курс удерживается стабильным постольку, поскольку ему можно не давать расти дополнительной эмиссией, но если он начнёт падать, компенсировать его слишком большими вливаниями владелец вряд ли будет, у него просто закончатся деньги. Ведь вряд ли кто-то на самом деле верит в то, что все полученные деньги они действительно хранят в сейфе и не тратят. Хотя такая декларация, наверное, может быть выгодна в плане уплаты налогов, это ведь получается нулевая прибыль.

This entry was originally posted at https://gul-kiev.dreamwidth.org/70858.html.
Subscribe

  • Про Гёделя, Пенроуза и вычислимость (3)

    Продолжаю ту же тему, предыдущие посты: 1, 2. В математике есть теория, которая ограничивается рассмотрением объектов, которые возможно построить,…

  • Про Гёделя и Пенроуза (2)

    Второй, но не последний пост на эту тему (чего-то зацепила). В комментариях к предыдущему посту об этом родилась краткая и более изящная версия…

  • Про Гёделя, Пенроуза и вычислимость

    Ещё раз про вычислимость, теорему Гёделя о неполноте, алгоритмизуемость человеческого сознания и Роджера Пенроуза, получившего в этом году Нобелевку.…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 13 comments

  • Про Гёделя, Пенроуза и вычислимость (3)

    Продолжаю ту же тему, предыдущие посты: 1, 2. В математике есть теория, которая ограничивается рассмотрением объектов, которые возможно построить,…

  • Про Гёделя и Пенроуза (2)

    Второй, но не последний пост на эту тему (чего-то зацепила). В комментариях к предыдущему посту об этом родилась краткая и более изящная версия…

  • Про Гёделя, Пенроуза и вычислимость

    Ещё раз про вычислимость, теорему Гёделя о неполноте, алгоритмизуемость человеческого сознания и Роджера Пенроуза, получившего в этом году Нобелевку.…