открытый исходный код биткоина
Как работать с github при анализе криптовалют / c open-source кодом
Часто при перечислении преимуществ блокчейн-проектов упоминается «открытый исходный код». Но что имеется в виду под этим термином, известным так же как open-source. И что можно узнать по ссылке на GitHub о какой-либо криптовалюте.
Читайте в статье
Если вы не технарь…
Если вы до изучения криптовалют особо не сталкивались с программированием и особенностями интернет-стартапов, возможно, вы задаетесь вопросом, что именно означает open source. А если вы рассматриваете проект для инвестирования, продукт предлагают смотреть на GitHub (или другом хранилище репозиториев).
Понимание того, как работают хранилища открытого исходного кода, а также изучение основ платформы GitHub, вероятно, является одним из наиболее эффективных способов понимания криптовалют и сообщества вокруг них на более глубоком уровне.
Также важно просматривать исходный код проектов самостоятельно, независимо от уровня знаний в программировании (или вообще отсутствии таковых). Это незаменимый инструмент в определении достоверности работы команды.
Открытый исходный код
Проект с открытым исходным кодом — это проект с таким кодом, который каждый может проверять, изменять и расширять. Мир программ с открытым исходным кодом распространен далеко за пределами блокчейна и криптовалют. Но справедливо будет сказать, что большинство всех криптостартапов продвигаются как проекты с открытым исходным кодом.
Напротив, программы корпораций часто имеют исходный код, который поддерживает только тот человек, команда или организация, которые его создали. Это Facebook, Adobe и другие популярные компании (которые тоже часто открывают доступ к своим наработкам в определенных областях). В таком случае это называется несвободное программное обеспечение — с закрытым, защищенным правом собственности кодом. Только оригинальные авторы проприетарного программного обеспечения (его второе название) могут юридически получить доступ, скопировать и изменить указанное ПО.
Программное обеспечение с открытым исходным кодом делает код доступным для всех. Буквально каждый может просматривать, копировать, изменять и делиться, а также учиться на его базе (ограничения все таки могут быть, они регулируются лицензией каждого конкретного проекта). Это способствует сотрудничеству внутри сообщества, позволяет другим людям вносить изменения в исходный код.
Создавая программное такое обеспечение блокчейн-проект также способствует большей децентрализации. К проекту привлекаются энтузиасты, заинтересованные специалисты. Сообщество проверяет код на ошибки и прочее.
Преимущества открытого исходного кода
В книге Эрика Рэймонда «Собор и Базар» описывается, что открытый источник представляет собой революционный способ создания технологий. Linux, с тысячами неаффилированных разработчиков, работающих в сотрудничестве, служит примером такой модели.
Раймонд выделил несколько преимуществ:
Клиент Bitcoin Core является продуктом более 15 000 уникальных обновлений от более чем 450 независимых разработчиков.
Программное обеспечение доступно для бесплатного использования и модификации в соответствии с разрешительной лицензией MIT, а полная история этой разработки видна в общедоступном репозитории программного обеспечения, размещенном на Github. Это позволяет любому зарегистрировать учетную запись, загрузить новый код и отслеживать изменения.
GitHub
Децентрализованный программный проект хоть и распределен, но по-прежнему требует единого места для всех участников проекта, где можно смотреть, изменять, сравнивать, обновлять код. Один из таких вариантов GitHub.
GitHub — это платформа для хостинга проектов, в основе которой лежит система GIt. GitHub отслеживает историю изменений исходного кода (хранит правки всех файлов за все время) проекта: что конкретно было изменено, кто изменил и когда.
Пример: при создании нового сайта есть задача добавить новую страницу. В первый день мы сделали основную html-разметку, создали коммит для этих изменений. Во второй — добавили стили (цвета, шрифты и т. д.) и также сделали новый коммит. Для того чтобы наш код могли проверить как единое целое (работа над конкретной страницей), создаем pull-request из списка наших коммитов. Теперь автор проекта может посмотреть все изменения и дать им оценку, возможно добавить какие то правки от себя или просто прокомментировать какие-то моменты.
Исходный код биткоина также открыт, любой желающий может его изучить или скопировать и создать свою монету (что происходит во время многочисленных его форков).
Основные элементы интерфейса
Главная страница репозитория:
Отображений изменений сделанных в коммите:
Красным показываются удаленные строчки (символы), зеленным — добавленные.
Исходники биткоина. Объемы информации, структура, след Накамоты.
Скачал я недавно исходники биткоина.
Одолел меня профессиональный интерес. Как же оно там всё устроено? И насколько сложно/профессионально создано?
Посмотрел, почитал, и вот что для себя выяснил:
1. Дистрибутив весит 19 МБ. В архивированном виде 7 МБ.
2. Содержит 110 директорий (папок).
3. файлов: 1 515 штук!
4. Только один файл валидации (validation.cpp) состоит из 4673 строки (211 854 символа)! А текстовых файлов, повторюсь, более тысячи!
5. Достойно реализован механизм внутренней базы данных (директория leveldb/db).
6. Проведена феноменальная работа в области криптошифрования по алгоритмам SHA-256 и SHA-512, а также другим алгоритмам (директория crypto).
7. Структура кода очень грамотная. Код чистый. Весь написан в одном стиле, с правильными комментариями на английском языке (японского языка вообще нет).
Вывод: данный проект это работа многих профессионалов (сетевиков, криптографов, базовиков и т.п.). Никаким японским Накомотой в коде и не пахнет. Да и не под силу одному человеку создать такое творение. Нужны группы высококлассных специалистов.
А Вы верите в то что биткоин создал какой-то японский Накамото? Что думаете по поводу всего этого? Кому это выгодно?
Bitcoin, анализ исходников.
ragnaroek:
Под словом «открытый» здесь подразумевается открытость алгоритмов создания шифра, а не самого шифра. Причем, возможность проверить надежность алгоритма любым мало-мальски сведущим кодером значительно снижает возможность его взлома.
Детективно-загадочная история в которой участвуют dyn.com, Lochkeed Martin, Bitcoin, SIP-телефония, EmerCoin.
http://help-pro.biz/blog/2014/10/03/detektivno-zagadochnaya-istoriya/
http://lleo.me/dnevnik/2014/10/02_emercoin.html
—-
Анализируя исходный код, унаследованный нами от PeerCoin-a (а им в свою очередь от BitCoin-a) мы обнаружили часть кода, где происходит получение внешнего IP адреса. Код написан был явно впопыхах, и для получения внешнего IP обращается к двум серверам, адреса которых «вшиты» в исходный код программы-кошелька: checkip.dyndns.org www.showmyip.com
Мы удивились, и решили проверить, как современный BitCoin справляется с этой задачей. И удивились ещё больше когда увидели, что старый код от Сатоши продолжает использоваться до сих пор, без каких бы то ни было изменений.
Причём продолжает использоваться как в самом Биткоине, так и во всех бесчисленных альтернативных криптовалютах, так или иначе базирующихся на оригинальном коде от Сатоши.
Небольшое исследование выяснило, что сервер www.showmyip.com в настоящее время недоступен, и все запросы кошельков за IP обрабатываются единственным оставшимся сервером checkip.dyndns.org.
Осознав этот факт, мы были просто шокированы. Подумать только! Новая экономика, декларируемая децентрализованность, полная независимость от правительств, многомиллиардные капиталы, одни правительства не знают, что с этим делать, другие — принимают какие-то законы.. А весь сетевой протокол этой новой экономики висит на одном-единственном ржавом гвозде по имени checkip.dyndns.org, скромно торчащем из карты штата New Hampshire!
Естественно, мы стали исследовать, обращал ли кто-либо внимание на этот вопиющий факт зависимости всей сети от единственного сервиса, предоставляемого какой-то небольшой и малоизвестной американской компанией. И обнаружили ряд дискуссий и запросов на устранение этой уязвимости.
Однако, ответы разработчиков биткоина сводились к банальному: «Не обращайте внимания, и так работает, и даже если сервис будет недоступен для кого-то, ничего страшного не случится. Ну какие-то клиенты не смогут установить прямое соединение.. Но это же мелочи!»
.
И тут начались настоящие чудеса:
Сообщение было оперативно перенесено администраторами из широко читаемого технического форума в форума альтернативных валют, которые мало кому интересны. Хотя сообщение как раз имеет прямое указание на техническую уязвимость биткоина. На сообщение же разработчики биткоина нам прямо указали, что не стоит поднимать эту старую тему: Also, your post is barely on topic and you’ve bumped a pretty old thread. Please don’t do that. То есть налицо видна тенденция к заминанию темы.
—-
И это они ещё не начали всерьёз копать криптографию и алгоритмы!
Открытый исходный код биткоина
Bitcoin Core integration/staging tree
For an immediately usable, binary version of the Bitcoin Core software, see https://bitcoincore.org/en/download/.
Further information about Bitcoin Core is available in the doc folder.
Bitcoin is an experimental digital currency that enables instant payments to anyone, anywhere in the world. Bitcoin uses peer-to-peer technology to operate with no central authority: managing transactions and issuing money are carried out collectively by the network. Bitcoin Core is the name of open source software which enables the use of this currency.
For more information read the original Bitcoin whitepaper.
Bitcoin Core is released under the terms of the MIT license. See COPYING for more information or see https://opensource.org/licenses/MIT.
The master branch is regularly built (see doc/build-*.md for instructions) and tested, but it is not guaranteed to be completely stable. Tags are created regularly from release branches to indicate new official, stable release versions of Bitcoin Core.
The https://github.com/bitcoin-core/gui repository is used exclusively for the development of the GUI. Its master branch is identical in all monotree repositories. Release branches and tags do not exist, so please do not fork that repository unless it is for development reasons.
The contribution workflow is described in CONTRIBUTING.md and useful hints for developers can be found in doc/developer-notes.md.
Testing and code review is the bottleneck for development; we get more pull requests than we can review and test on short notice. Please be patient and help out by testing other people’s pull requests, and remember this is a security-critical project where any mistake might cost people lots of money.
There are also regression and integration tests, written in Python. These tests can be run (if the test dependencies are installed) with: test/functional/test_runner.py
The CI (Continuous Integration) systems make sure that every pull request is built for Windows, Linux, and macOS, and that unit/sanity tests are run automatically.
Manual Quality Assurance (QA) Testing
Changes should be tested by somebody other than the developer who wrote the code. This is especially important for large or high-risk changes. It is useful to add a test plan to the pull request description if testing the changes is not straightforward.
Changes to translations as well as new translations can be submitted to Bitcoin Core’s Transifex page.
Translations are periodically pulled from Transifex and merged into the git repository. See the translation process for details on how this works.
Important: We do not accept translation changes as GitHub pull requests because the next pull from Transifex would automatically overwrite them again.
Код биткоина
Исходный код биткоина был разработан Сатоши Накомото на основании более ранних идей, выдвинутых американскими программистами. Однако именно он сумел полноценно его обосновать, после чего представил на суд общественности в открытом письме на одном из крупных форумов. Благодаря этой инновации в мире появились цифровые валюты, но при этом так до сих пор и не раскрыта личность человека, создавшего систему блокчейна.
В чем состоит уникальность кода биткоина
Уникальность кода блокчейна заключается в том, что он открыт для любого, кто хотел бы получить к нему доступ. Сатоши Накомото изначально не планировал делать свою разработку источником обогащения, он лишь хотел показать миру, как можно применять криптографические алгоритмы и какие перспективы открывает данное знание. В 2010 году он и вовсе отошел от дел, передав бразды управления проектом своей команде, где сегодня трудится почти 3 тысячи энтузиастов.
Однако исходным кодом биткоина свободно может воспользоваться любой программист. Таким образом и начали появляться новые альткоины, многие из которых были полными клонами BTC и не получили дальнейшего развития.
Но единицы все же выжили и даже выбились в лидеры. Показательный пример — криптовалюта Litecoin, которая полностью базируется на исходном коде биткоина, но имеет два важных преимущества: ее эмиссия в 4 раза больше, а схема майнинга — проще и позволяет применять только процессор без айсиков и видеокарт.
Различия кодов
Следует различать исходный коды биткиона и номер (адрес) кошелька для BTC. Нередко эти понятия рассматриваются как синонимичные, но между ними есть существенные различия. Исходный код — это основа, база, математическая модель, по которой совершаются все транзакции в системе. Но при этом получить к ней доступ и даже изменить ее может любой.
Так начиналась история Биткоин Кэш, Бикоин Голд, Лайткоина и др. Узнать о том, как выглядит код биткоина, когда и кем в него вносились изменения можно на сайте GitHub. Этот ресурс представляет собой платформу для хостинга криптовалютных проектов. В целом же исходный код BTC — это длиннющая цепочка двоичного типа, в которой представлены только 0 и 1.
По-другому выглядит номер кошелька биткоина — это тоже математическая формула, но набор символов в ней более разнообразный:
Зная этот адрес, можно обменять BTC в обменнике на фиаты, а еще его нужно будет ввести, чтобы получить заработок от торгов на бирже. Генерируется номер автоматически, стоит только скачать кошелек себе на компьютер или открыть онлайн.
Програмный код
Программный открытый код биткоина определяет конечную эмиссию актива, которая составляет 21 млн. Новые монеты появляются в результате подтверждения транзакций, причем сложность вычисления блоков возрастает из-за удлинения блокчейна. Поэтому для BTC сегодня уже невозможен майнинг без айсиков и приходится искать альтернативные пути добычи. Например, получать монеты возможно с помощью сайтов-кранов.
Отзывы об исходном коде биткоина разные. Его до сих пор называют гениальным изобретением, но в то же время отмечают его техническое несовершенство. Попросту говоря — он устарел, и сегодня BTC держится на позиции лидера в основном за счет престижа. Постепенное устаревание блокчейна отражается и на котировках, о чем можно судить по динамике биткоина за все время.