😎Bitcoin. Зарождение легенды
Добрый день, друзья!
Появляется очень много новостей, статей и различной информации по blockchain'у и различным криптовалютам, но мы сегодня сделаем небольшую ретроспективу и посмотрим, с чего все начиналось. 😉
Это мой первый пост, так что буду благодарен за критику, рекомендации и комментарии. Подписывайтесь, чтобы не пропустить интересный материал, этим вы меня очень поддержите! Решил это сделать в поддержку данного проекта, также внести лепту в развитие всего blockchain комьюнити, найти единомышленников и структурировать информацию.
На этом завершу свое интро и перейдем к сути. Приятного прочтения!🙃
В статье Bitcoin's academic pedigree(1) описан тот фундамент, на котором основан bitcoin. Многие люди, особенно те, кто не изучает фундаментальные вещи ошибочно считают, что биткоин принес всего себя в мир, который до этого ни о чем не подозревал о таких возможностях и разразился как гром среди ясного неба. Правда состоит в том, что создатель биткоина, конечно же является человеком просвященным и осведомлен о криптографических примитивах и гений его состоит не в том, что он изобрел эти подходы, а в том, что он сумел соединить воедино эти примитивы, очень нетривиальным образом так, что система заработала сама по себе и стала самоподдерживающеюся. Это не умаляет достижения Nakamoto, а лишь указывает на то, что он стоял на плечах гигантов, когда проектировал bitcoin.
Рис. 1. Происхождение bitcoin'а в контексте академического исследования
Начало данного пути лежит в 1980-х годах. Начнем с простой части: выбор структуры данных.
Идея №1 Linked timestamping
Cтруктура данных заимствована с минимальными изменениями из серии статей Stuart'a Haber'a, Scott'a Stornetta и Dave'a Bayer'a, написанных между 1990 и 1997 годами. (2,6,7) Сам Nakamoto говорит это в white paper'е в bitcoin'a(10).
Работа Haber'a и Stornetta рассматривала проблему timestamping'а (временного штампа) документов - они стремились создать «цифровую нотариальную» услугу. Для патентов, деловых контрактов и других документов, для которых нужно установить, что документ был создан в определенный момент времени, а не позже.
В версии Haber'a и Stornetta постоянно создаются и распространяются документы. Создатель каждого документа устанавливает время создания и подписывает его с меткой времени и меткой ранее опубликованного документа. Этот предыдущий документ был подписан самим владельцем, поэтому документы образуют длинную цепочку с указателями назад во времени.
Рис.2. Структура данных регистра в linked timestamp
Внешний пользователь не может изменить сообщение с отметкой времени, так как оно подписано создателем, и создатель не может изменить сообщение, не изменяя всю цепочку сообщений, которые следует за ней.
Таким образом, если вам предоставляется один элемент в цепочке доверенным источником (например, другим пользователем или специализированной службой временной привязки), вся цепочка до этой точки заблокирована, неизменна и временно упорядочена.
Идея №2 Merkle trees
Ссылки между документами могут быть созданы с использованием хешей, а не подписи; хэши проще и быстрее вычислять. Такие ссылки называются хэш-указателями.
Вместо поточного документирования отдельных документов, которые могут быть неэффективными (если многие документы создаются примерно в одно и то же время), их можно сгруппировать в пакеты или блоки, причем документы в каждом блоке имеют по существу одну и ту же метку времени.
Также, в каждом блоке документы могут быть связаны вместе с бинарным деревом указателей хэшей, называемым деревом Merkle, а не линейной цепочкой.
Рис.3. Merkle root, опубликованный в газете
По крайней мере, две компании - Surety, начиная с середины 1990-х годов и Guardtime, начиная с 2007 года, предлагают услуги по timestamping'у. Интересным поводом для обоих этих сервисов является идея, публикования корня дерева Merkle'а в газете. На рисунке 3 показан корень Merkle, опубликованный Guardtime.
Идея №3 Proof of work
У вас есть какие-то данные, вы вычисляете от них хеш и если хеш-функция является криптографической (в том смысле, что ее нельзя предсказать, найти коллизии, кроме как перебором), тогда, вероятность того, что в двоичном виде первый символ будет равен нулю, равна 1 к 2 (т.к. есть два варианта 0 и 1). То, что 2 символа равны нулю, равна 1 к 4 и т.д. И требуется модифицировать данные так, чтобы новых хэш этих данных начинался с определенного количества нулей. Для этого может понадобиться произвести перебор объемом в 2 в степени n, чтобы получить такой хэш. Этот принцип и получил название Proof of Work, т.к. для генерации хэша специального вида нужно произвести определенную работу.
Рис.4. Типичный спам
Такой подход был придуман еще в начале 1990-х в качестве меры против спама. Для отправки e-mail нужно было произвести какую-то работу по поиску подходящего хеша, который будет зависеть от контента письма, что занимало какой-то промежуток времени. И такой подход требовал от спамеров повышенных вычислительных ресурсов, либо продолжительного времени.
В дальнейшем, борьба со спамом пошла по другому пути. ;)
Идея №4 Byzantine fault tolerance
В распределенном реестре неизбежно будут возникать fork'и, а это означает, что некоторые узлы будут думать, что блок A является последним блоком, тогда как другие узлы будут считать, что это блок B. Это может быть из-за того, что противник пытается нарушить работу реестра или просто из-за скорости сети, в результате чего блоки иногда генерируются почти одновременно разными узлами, не знакомыми с блоками друг друга.
Рис. 5. Задача византийских генералов
Ранние решения, в том числе Paxos(12), предложенное Leslie Lamport в 1989 году(8,9), рассматривают репликацию государства, когда каналы связи ненадежны и когда меньшинство узлов может проявлять определенные «реалистичные» ошибки, такие как выход в автономный режим навсегда или перезагрузка и отправка устаревших сообщений.
Идея №5 Public keys as identities
На самом деле, David Chaum также внес существенный вклад в анонимные сети, и именно в этом контексте он придумал эту идею. В своей статье 1981 года «Untraceable Electronic Mail, Return Addresses, and Digital Pseudonyms»(3) он заявляет: "Цифровой псевдоним" - это открытый ключ, используемый для проверки подписей, сделанный анонимным держателем соответствующего закрытого ключа.
Рис.6. David Chaum
Chaum еще больше развил эти идеи в статье 1985 года (4), в которой он представляет видение электронной коммерции, защищающей конфиденциальность, основанной на повсеместных псевдонимах.
Идея №6 Digital Cash
Более согласованные подходы к решению головоломок в виде наличных денег можно найти в двух эссе, которые предшествовали bitcoin'у, описывая идеи, называемые b-money(5) и bit gold(11) соответственно. Эти предложения предлагают timestamping сервисы, которые подписываются на создание (посредством доказательства работы) денег, и как только деньги создаются, они подписываются на переводы. Однако, если между серверами или узлами существует несогласие с журналом, нет четкого способа его устранения.
Рис. 6 Digital cach
Учитывая факты, которые мы сейчас разобрали, можно прийти к заключению, что bitcoin - революционный продукт, но революция состоит в том, как именно множество компонентов были собраны в единый самоподдерживающийся механизм, а не в изобретении отдельных подходов.
Satoshi Nakamoto создал восхитительный продукт, который завоевал особое внимание у миллионов людей. И давайте внесем свою лепту в этот захватывающий проект и весь мир blockchain в целом!
Если вы дочитали до этого места, я особенно Вам благодарен!😍 Это был мой первый пост и я надеюсь, он оказался полезен. Ниже Вы можете найти источники и контактную информацию для тех, кто хочет что-то обсудить или просто улучшать networking ;). Для советов\замечаний\пожеланий, прошу в комментарии. Подписывайтесь, чтобы не пропустить интересный материал и быть в курсе событий, этим вы меня очень поддержите!
Спасибо!
References
1. Откуда вышёл биткойн: статья Bitcoin's academic pedigree https://queue.acm.org/detail.cfm?id=3136559
2. Bayer, D., Haber, S., Stornetta, W. S. Improving the efficiency and reliability of digital time-stamping. Proceedings of Sequences 1991; https://link.springer.com/chapter/10.1007/978-1-4613-9323-8_24.
3. Chaum, D. 1981. Untraceable electronic mail, return addresses, and digital pseudonyms. Communications of the ACM 24(2): 84-90; https://dl.acm.org/citation.cfm?id=358563.
4. Chaum, D. 1985. Security without identification: transaction systems to make Big Brother obsolete. Communications of the ACM 28(10): 1030-1044; https://dl.acm.org/citation.cfm?id=4373.
5. Dai, W. 1998; http://www.weidai.com/bmoney.txt.
6. Haber, S., Stornetta, W. S. 1991. How to timestamp a digital document. Journal of Cryptology 3(2): 99-111; https://link.springer.com/chapter/10.1007/3-540-38424-3_32.
7. Haber, S., Stornetta, W. S. 1997. Secure names for bit-strings. In Proceedings of the 4th ACM Conference on Computer and Communications Security: 28-35; http://dl.acm.org/citation.cfm?id=266430.
8. Lamport, L. 1989. The part-time parliament. Digital Equipment Corporation; https://computerarchive.org/files/mirror/www.bitsavers.org/pdf/dec/tech_reports/SRC-RR-49.pdf.
9. Lamport, L. 2001. Paxos made simple; http://lamport.azurewebsites.net/pubs/paxos-simple.pdf.
10. Nakamoto, S. 2008. Bitcoin: a peer-to-peer electronic cash system; https://bitcoin.org/bitcoin.pdf.
11. Szabo, N. 2008. Bit gold. Unenumerated; https://unenumerated.blogspot.com/2005/12/bit-gold.html.
12. Алгоритп Paxos; https://en.wikipedia.org/wiki/Paxos_(computer_science)
Контакты:
⦁ Telegram: https://t.me/Raumo0