После моего последнего поста на тему криптографии, в котором я лично оскорбил половину криптосообщества (в свою защиту мне нужно только 30% сети ETH2 на моей стороне — ЭТО ШУТКА С ПРОФЕССИОНАЛЬНОЙ СТАВКОЙ, ДРУЗЬЯ), несколько человек попросил меня объяснить, почему я считаю Proof of Work (PoW) чертовски элегантным, а Proof of Stake (PoS) чертовски… нет.

Эта статья из 2200 слов будет для вас тем же, чем была для меня книга Босоногий Джо. Вам, неграмотным обывателям, эта книга может быть известна как фильм «Поле чудес». Я автор W. P. Kinsella, а это Shoeless Crypto. Он будет полон бейсбольных метафор.

Видите ли, после прочтения Босоногий Джо я не думаю, что влюбился в бейсбол из первых рук, но Босоногий Джо нарисовал романтическую картину того, как кто-то можетвлюбиться в бейсбол из первых рук. Я стал искренне открыт для таинств спорта. Этакая… любовь из вторых рук. Это то, что я собираюсь сделать в этой статье, за исключением того, что в этой аналогии бейсбол заменим PoW. Неужели до сих пор не понятно, о чем я? Эта статья заставит вас влюбиться в PoW из вторых рук.

Я не знаю, как сделать это яснее, ребята.

Элегантная математика

Начнем с математики, потому что все хорошее в мире начинается с математики (эта статья может быть немного более неуклюжей, чем Босоногий Джо, получивший Канадскую национальную книжную премию). Что делает одну математику более элегантной, чем другую математику? Некоторые люди считают всю математику непостижимой тарабарщиной, но подождите, помните: Я Кинселлаи вы учитесь любить бейсбол.

Поговорим о дробях.

Дроби

Фракции элегантны, потому что, среди прочего, они просты и лаконичны. Если я хочу что-то разделить на семь и взять себе одну часть, я могу записать результат в виде дроби:

Вот сколько у меня есть. Это не два числа, это одно число: одна седьмая. Теперь у нас есть выбор, и мы можем усложнить это число и выразить его в виде десятичной дроби:

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

Однако здесь есть еще одна проблема, гораздо более серьезная, чем добавление шестой столовой ложки пищевой соды вместо седьмой: это десятичное значение не равно одной седьмой. Я изменил на тебе одну из цифр — ты заметил? Черт возьми, нет. Исключительно трудно сказать, когда есть ошибка с вашими десятичными знаками. Если бы я не проболтался о дробных бобах, вы бы никогда не заметили.

Два удара по десятичной дроби (видите, я говорил, что вас ждут бейсбольные метафоры).

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

Это, как и одна седьмая, является единственным числом с точным значением. А что, если я захочу два таких? О, это просто, я просто поставил 2 сверху. Если бы я попробовал это с десятичными дробями, во Вселенной буквально не хватило бы атомов, чтобы записать десятичное разложение.

Мат, у тебя закончились десятичные дроби.

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

  • Простота
  • Легко перемещаться в голове
  • Легко распознать неудачи

Я хотел бы продолжить изучение элегантности в математике, но по той же причине, по которой Босоногий Джо занимает всего 514/2 страниц, я должен двигаться дальше.

Подпишитесь на Канал Coinmonks Youtube, чтобы получать ежедневные новости криптовалюты.

Элегантное программирование

Я всего лишь математик-любитель ((ℂ, +, *) — это моя область мечтаний), но, как и все, кто когда-либо использовал Excel в своей работе, я профессиональный программист. Что же делает код элегантным? Я не хочу воровать здесь базу, но в основном мы хотим, чтобы наш код имел те же свойства, что и наша математика.

Это может вас удивить, но самый элегантный код в мире — это ноль строк. Это самый простой код для написания и самый простой для понимания. С первого взгляда я знаю, что делают эти нулевые линии. Я могу передать эти нулевые строки любому программисту любого уровня квалификации с разумной гарантией того, что они тоже смогут это понять. Эти нулевые строки кода будет легко поддерживать через три года, и они легко станут самыми свободными от ошибок строками во всем мире.

Но помоги Бог программисту добавить следующую строку кода.

Это явно глупо писать, и вы, к сожалению, стали немного глупее, раз прочитали это. Однако именно так можно построить герметичный случай по индукции: начните с тривиального случая и двигайтесь вверх.

После того, как мы добавим следующую строку кода, нам нужно переоценить нашу программу, используя критерии, которые я описал выше:

  • С большим количеством кода весьма вероятно (хотя и не необходимо — успокоить болтунов), что мы добавили больше сложности. Таким образом, наша оценка простоты уклоняетсявниз.
  • У нас немного больше кода, который программисту приходится крутить в голове, чтобы обдумать проблемное пространство. Это означает, что, к сожалению, показатель умственной ловкости также будет снижаться.
  • Как у нас обстоят дела с оценкой признания неудач? Это, опять же, скорее всего уменьшилось просто из-за того, что появилось больше мест, где мог скрыться сбой. Чем больше кода мы добавляем и чем сложнее конкретные строки кода, которые мы добавляем, тем труднее увидеть сбои на поверхности.

Я слышу какофонию тысяч пар очков, скользящих по тысяче сальных носов: ну, на самом деле, я бы классифицировал связь между строками кода и умственной подвижностью с пятикратным снижением, а здесь вы явно используете кубическое число. регрессия — да, большое спасибо за этот проницательный вклад, Mr ComparatorBridgeOrderIteratorInstanceBean. Я явно рисую здесь общую картину: основные цвета, нет точки схода, нет нюансов. Однако поверьте мне, профессиональному энтузиасту программного обеспечения, что эти вещи в целом верны.

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

Элегантный крипто

Вы можете видеть, к чему я иду. Мой кейс чертовски герметичен. Я говорил тебе, насколько он герметичен? Данг. Торговая марка Tupperware, внутри сверхтяжелая тройная застежка Ziploc. Самому Мини-Гудини пришлось бы время выжимать из этого.

Я пишу о математике и программировании, потому что оригинальный технический документ о биткойне представляет собой смесь этих двух областей (кстати, вы читали мой фанфик-рассказ о неизвестном изобретателе биткойна под названием Сатоши Накамото: путешественник во времени? ??). Поэтому, когда я говорю, что PoS не элегантен, я имею в виду, что он плохо оценивается по этим трем параметрам.

Давайте рассмотрим мои необоснованные претензии.

  1. PoS чрезвычайно сложно. Ваш друг-криптоэнтузиаст, если только он не работает в фонде Ethereum, понятия не имеет, как на самом деле работает реализация PoS. Виталик Бутерин может разбрасывать эту чушь, но для остальных из нас, смертных, мы должны смотреть 3-серийный сериал, чтобы понять основы полиномиальных обязательств. С другой стороны (как я описал в своем предыдущем посте), я могу очень точно объяснить схему PoW любому, просто нарисовав несколько стрелок и кружков. Я даже могу разработать хэш-функцию (не очень хорошую, но все же хеш-функцию) прямо перед ними. Proof of Stake имеет низкую оценку по шкале простоты.
  2. Могу ли я подержать в голове схему PoW и подумать о ней? Я покажу вам картинку, а затем хочу, чтобы вы закрыли глаза и поработали над ней своим мозгом.

Блин, подождите, про комитеты я тоже забыл, так что вам тоже нужна эта картинка в голове:

Подождите, я еще забыл о монетах. Разве где-то нет монет? Я уверен, что он у меня где-то есть… И да, я также определенно понимаю, как сюда вписывается эта трехчасовая серия полиномиальных объяснений обязательств.

В качестве альтернативы, и я допускаю, что это вполне возможно: возможно, я не в себе, и все вы, добрые внутридневные трейдеры Coinbase, действительно получаете все это.

3. Если мы можем удержать вышеизложенное в голове, давайте искать потенциальные укрытия для ошибок. Честно говоря, трудно даже найти отправную точку, потому что непонятно, где вы входите и выходите из системы. Позвольте мне начать гораздо проще: шифрование.

Шифрование является основной частью систем PoW и PoS. Однако это иллюстрация, показывающая, как создается сложное программное обеспечение. Нам нужно шифрование, чтобы начать создавать все из этого материала, и поэтому мы считаем само собой разумеющимся, что хорошее шифрование существует и что те самые программисты, которые придумывают забавные названия для монет-шуток, также знают, как их использовать. шифрование хорошо при написании программного обеспечения.

Шифрование настолько невероятно сложно и его легко испортить, что существует общепринятая поговорка программистов: Не применяйте собственное шифрование. Существует всего несколько надежных библиотек шифрования, которые использует каждый программист во всем мире. Эти библиотеки являются предметом постоянных исследований, проверок кода и тестов на проникновение. Буквально тысячи докторов наук изучают этот материал на протяжении десятилетий, пытаясь найти недостатки. Эти исследователи безопасности выращены в пробирках с добавлением нескольких капель опасных видов науки, и в младенчестве они не спят в своих кроватках, глядя на мобильные телефоны, сделанные из предполагаемых бозонов и мнимых чисел.

Сложность шифрования требует такого пристального внимания — и все же в 2014 году ошибка Heartbleed все равно вылезла наружу, хотя многие годы оставалась незамеченной. Эта ошибка была настолько серьезной, что, среди прочего, позволяла хакерам красть любую информацию, отправленную через защищенную веб-страницу. Знаете, как работает все деньги? У меня был друг, который сказал мне, что его это не беспокоит, потому что он использовал свою карту только лично в магазинах и никогда в Интернете. Он был очень разочарован, узнав, что картридер TJ Maxx действительно использует Интернет.

Конечно, дети из пробирки исправили эту проблему с шифрованием, и, конечно же, это спасло мир. Вздох. Я предвосхитил остальную часть истории — это то, что делают великие писатели, такие как я и офицер Ордена Канады Кинселла. Помните, что люди должны использовать программное обеспечение правильно, чего они, конечно же, не делали. Спустя пять лет после того, как эта проблема была исправлена, было обнаружено, что 200 000 серверов в дикой природе все еще не обновлены до исправленной версии.

Вот что происходит со сложным программным обеспечением, решающим сложные задачи. И я даже не упомянул Spectre and Meltdown, которые влияют как на компьютер, на котором я это пишу, так и на компьютер, на котором вы это читаете.

Как я уже говорил для начала, и PoS, и PoW используют эти специфические библиотеки шифрования, однако моя точка зрения заключается в том, что хитрые, сложные идеи не выходят через кончики пальцев человека в компьютеры волшебным образом невредимыми. Они выходят потными, вздымающимися, сломанными вещами. Чем сложнее идея, тем более несовершенным может быть программное решение.

Хуже лучше

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

Элегантность, к сожалению, — цитируя мем — не «все вещи».

Это невероятно, какое программное обеспечение Франкенштейна живет и дышит в дикой природе, загребая умопомрачительные суммы денег. И дело не только в деньгах — существует множество ужасного программного обеспечения с ошибками, которое чертовски полезно. Вы когда-нибудь пробовали использовать Gmail? Боже мой, какой пожар на свалке! Эти монстры ходят среди нас, но, как и старые големы, лучше всего уничтожаются клавишей возврата. На самом деле работает только простое программное обеспечение, и даже тогда это всего лишь возможно.

Однако, хотя Proof of Stake не соответствует элегантности Proof of Work, я по-прежнему убежден, что это наше лучшее будущее. Вам будет приятно узнать, что я не абсолютный лицемер. Я действительно имел в виду то, что сказал, и продал свою кричащую 2000-ваттную печь — э-э, GPU-майнер.

Вздох.

Прощай, Proof of Work, мой старый друг. Пора уходить с поля.

Присоединяйтесь к Coinmonks Telegram Channel и Youtube Channel, узнайте о криптотрейдинге и инвестировании

Также читайте