Как разработать собственный блокчейн (часть 2). Разработка блокчейн


Разработка блокчейн проектов – основные шаги: алгоритм разработки

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

В октябре 2017 года на GitHub – платформе, объединяющей более 24 миллионов пользователей, около 86 тысяч проектов так или иначе были связаны с блокчейн технологией.  Несмотря на такую многочисленность, в среднем только 8% из них остаются на плаву через год после запуска. Это свидетельствует о том, что интерес у разработчиков к технологии растет, однако только избранным проектам удается создать действительно устойчивое решение, которое способно выжить на начальных этапах разработки и двигаться вперед.

Поэтому ниже мы расскажем, какие шаги нужно сделать, чтобы разработка блокчейн проектов была успешной.

Найдите свою нишу

Достаточно трудным является поиск идеи для решения, которое будет основано на технологии блокчейн. Если вы посмотрите на возможные варианты использования, может показаться, что вы можете внедрить распределенный реестр практически в любую отрасль — банковское дело, интеллектуальная собственность, страхование, логистические услуги и т.д. Тем не менее, необходимо провести углубленный анализ уже существующих проектов, прежде чем начинать разработку своего. Тот факт, что логистика может извлечь выгоды из возможностей блокчейна, не означает то, что сегодня нужно 100 идентичных проектов, которые направлены на решение одной и той же проблемы.

Разработайте свой уникальный Workflow

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

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

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

Выберите новый либо существующим блокчейн

Успешная разработка блокчейн проектов также зависит и от выбора децентрализованного реестра. Так, если вы убеждены в том, что блокчейн является единственным, самым быстрым, самым дешевым способом решения острой проблемы, тогда создавайте его.

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

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

Сделайте выбор между частным и публичным блокчейном

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

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

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

Выберите подходящий механизм консенсуса

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

Наиболее широко используемым протоколом является Proof-of-Work, который используется в биткоине. Когда определенный пользователь (узел) генерирует новый блок и хочет добавить его в цепочку блоков, другие члены сети могут легко проверить, целесообразно ли добавлять этот блок либо нет. Если все в порядке, то в сети появляется новый блок, и все участники соглашаются с тем, что содержащаяся в нем информация действительна.

Помимо Proof-of-Work, вы можете отдать предпочтение:

  • Proof-of-Stake
  • Delegated Proof-of-Stake
  • Proof-of-Authority

Выберите подходящую платформу

Чтобы проанализировать, какая платформа соответствует вашим потребностям, вы можете начать с поиска тех, которые имеют самую большую капитализацию на рынке:

  • Bitcoin
  • Ethereum
  • Litecoin
  • Cardano
  • NEO
  • IOTA
  • Monero
  • NEM

Все рейтинговые платформы, кроме Ripple, являются общедоступными и основаны на протоколе Proof-of-Work. Это не значит, что вы обязаны выбрать один из них — это просто означает, что выбор таких платформ намного шире.

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

Решите, нужны ли вам смарт-контракты

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

 

coinnet.ru

Разработка блокчейн-проектов - Услуги - AXIOMA

Языки программирования и фреймворки

Python – этот язык программирования используется для написания автоматических тестов, для разработки mining pool, для быстрого создания различных утилит.

PHP, HTML5, CSS, JavaScript/jQuery – стандартный набор большинства веб-разработчиков в мире. Каждая из этих технологий активно развивается и эволюционирует, помогая разработчикам делать современные продукты быстрее и качественнее.

Symfony 3 – суперсовременный и один из самых популярных в мире MVC фреймворков. Эта enterprise-level платформа обеспечивает высокий уровень качества, надёжности и быстродействия. Большая часть проектов, которые мы сделали в последние пять лет, написаны на Symfony. За это время мы создали собственную библиотеку плагинов (бандлов) и разворачиваем новые проекты на готовых модулях в течение нескольких часов.

Ruby on Rails 5 – фреймворк для создания веб-приложений на языке Ruby. Мы используем его на нестандартных проектах, когда необходимо быстро получить нужный результат. Развитые механизмы автоматического тестирования позволяют нашим клиентам быть уверенными в полученном результате.

Блокчейн технологии

Для коммуникации с Bitcoin и его форками мы используем JSON-RPC API. Мы владеем приемами создания сложных транзакций, можем защитить средства проекта с помощью multisignature и cold wallet. Мы также имеем опыт интеграции с известными блокчейн сервис-провайдерами.

C/C++, Qt – на этих технологиях был написан и продолжает развиваться оригинальный клиент Bitcoin Core. Многие форки блокчейна, в том числе созданные нами, наследуют эти технологии. Разработка новых алгоритмов Proof of Work, используемых в майнерах, также ведется нами на языке C++, с использованием вычислительных библиотек CUDA, OpenCL.

Мы разрабатываем смарт-контракты для сетей Ethereum и RSK на языках Solidity и Vyper.

Мы владеем инструментами Web3.js и MetaMask, которые позволяют создавать интерактивные web-приложения. 

Базы данных

Основной выбор при разработке проектов средней сложности, это MySQL. Если в проекте требуется работа с транзакциями, финансовой логикой, статистикой или картографией, то мы используем PostgreSQL. MongoDB мы берём в качестве инструмента в случаях, когда преобладают операции чтения из БД. Redis – простое и эффективное решение для кеширования данных. В технологически сложных проектах используем микс из разных баз данных, максимально используя сильные стороны каждой.

Мы имеем также опыт миграции проекта на Microsoft SQL Server.

Инструменты: MySQL (MariaDB, Percona), PostgreSQL, MongoDB, Redis

JS фреймворки и библиотеки

В последнее время разработка фронтенд-компонентов проектов изменилась, и активно появляются новые инструменты для оптимизации кода, скорости работы и правильной разработки. На большинстве проектов мы используем Require.js, WebPack и Handlebars.js.

ReactJS, Angular, Backbone.js – современные средства для создания пользовательских интерфейсов, на базе которых мы создаем single-page applications проекты (одностраничные приложения).

Gulp, Grunt – с помощью этих инструментов мы оптимизируем размер контента страницы – картинок, CSS и JavaScript файлов, а так же меняем подход выгрузки ресурсов на клиентов вашего проекта. Мы контролируем, как и в каком объёме пользователь получит ресурсы, выгружаемые на отдельных страницах. Каждая страница содержит только тот набор ресурсов, который необходим для её отображения.

Методология тестирования

Проект (самые важные части или весь код) покрываются автоматическими тестами, как unit-тестами, так и функциональными тестами для фронтенда. Мы используем подход Continuous Integration, при котором тесты запускаются автоматически каждый раз, когда происходит обновление кода в репозитории, и разработчик видит, не затронуло ли его изменение другие части кода.

Behaviour driven development (BDD) особенно часто мы используем в Agile проектах, когда написанные тесты позволяют контролировать целостность проекта и проводить быстрые изменения без потери качества.

Инструменты: GitLab CI, phpUnit, Rspec, Selenium, Behat, Mink, Capybara, Truffle, Remix

Поисковые движки

Когда нужен большой объём фильтрации или поиск по морфологии, стандартный поиск в базе данных работает не эффективно. Поисковые движки Sphinx Search и ElasticSearch создают индекс, по которому поиск и фильтрация осуществляются быстро и не нагружая ресурсы сервера.

Инструменты

Truffle – этот фреймворк мы используем для создания большинства смарт-контрактов.

Amazon Web Services (AWS) – для создания гибкой инфраструктуры высоконагруженного проекта.

Cloudflare – используем для обеспечения бесперебойной работы web-приложений наших клиентов.

NodeJS – инструмент, который мы часто используем для написания скриптов внутри проектов.

Blackfire – с помощью Blackfire мы замеряем производительность написанных нами компонентов и приложений. Отслеживание метрик на протяжении всей разработки даёт нам уверенность в том, что код написан не только качественно, но и наиболее оптимально.

Varnish – http кеширующий сервер для увеличения скорости загрузки страницы. В отдельных случаях может давать прирост в 20-50 раз и спасать от падения сервера под нагрузкой.

NGINX – производительный веб-сервер, стандарт де-факто в работе с объёмными проектами.

Newrelic – набор инструментов для замеров скорости работы и наличия ошибок. С его помощью мы проверяем производительность и находим узкие места в архитектуре проекта. Проводим нагрузочное тестирование и убеждаемся в том, что проект выдерживает требуемую заказчиком нагрузку.

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

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

www.axiomadev.ru

Разработка на Blockchain — что изменится для разработчиков? / Блог компании Конференции Олега Бунина (Онтико) / Хабр

Эта статья является переводом поста Винсента Чена (Vincent Chen) и Рамона Рекуэро (Ramon Recuero), цели которого очень схожи с теми, что преследуем и мы, и написанного для таких разработчиков, которых мы хотели бы видеть на своих мероприятиях.

Введение

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

Целью нашего поста является:

  • Объяснить, как разработка под блокчейн отличается от других существующих парадигм разработки;
  • Предоставить некоторый контекст для возможностей и вызовов, которые существую в этой сфере;
  • Познакомить вас с полезными (зарубежными) ресурсами, которые помогут вам заняться разработкой в этой новой парадигме.
Если же вы только начинаете разбираться в этой теме, мы рекомендуем вам начать с чтения bitcoin white paper и white paper для Ethereum.

Сдвиг парадигмы для разработчиков

Веб-приложения выгодно использование сетевого эффекта благодаря тому, что они придерживаются централизованного хранения информации. Построенные на общих открытых протоколах (например, TCP/IP и HTTP), компании Yelp, Facebook и Amazon выигрывают от того, что всех их пользователи и, в результате, их данные находятся в одном месте. Таким образом, они не просто получают преимущество над конкурентами, у которых имеется меньше данных, но и держат полный контроль над тем, как монетизировать эти данные. Цитируя криптоинвестора Джоэла Монегро:«Нынешняя парадигма интернета извлекает максимум полезности из толстого слоя приложений, в то время как тонкий слой коммуникационных протоколов под ним имеет минимальную ценность». В качестве альтернативы, распределение ценности в парадигме блокчейна может быть выражено как толстые протоколы и тонкий слой приложений. Подобный сдвиг парадигмы возможен за счет нововведения — криптографических токенов, которые хорошо описал Альберт Венгер из венчурной компании Union Square Ventures:«Исторически сложилось, что единственным способом заработать на протоколе было создание программного обеспечения, которое его реализует, с последующей попыткой продавать данное ПО (а в последние годы — хостить его). Однако с помощью криптографических токенов создатели протокола могут «монетизировать» его напрямую и фактически получают еще больше выгоды по мере того, как другие создают бизнесы на основе их протокола». В прошлом, создатели открытых коммуникационных протоколов для Интернета — по большей части это были исследователи DARPA и контрибьюторы-добровольцы — не имели финансовых стимулов к разработке протоколов. Для сравнения, сегодня создатели протоколов могут выпускать токены, подобные Bitcoin или Ethereum, что отражает ценность этих децентрализованных протоколов.

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

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

Ethereum

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

Восемь лет назад Bitcoin воспринимался как виртуальная валюта, которая устраняет необходимость существования централизованных финансовых систем. Первоначально разработчики действительно пытались строить приложения поверх блокчейна Bitcoin с сохранением данных в самом блокчейне, однако достаточно быстро выяснилось, что это весьма неэффективный подход (об этом тоже есть старый пост Джоэла). Один из таких разработчиков, Виталик Бутерин, был разочарован «малоподвижностью» Bitcoin и его принципом избегания риска в части новых, дружественных разработчикам функций. Поэтому он создал свою собственную платформу, Ethereum.

В то время как Bitcoin изначально задумывался как новое средство для финансового хранения стоимости, Ethereum был изобретен для того, чтобы служить Тьюринг-полным окружением разработки. В Ethereum, разработчики пишут смарт-контракты на Solidity, и эти умные контракты выполняются на виртуальной машине Ethereum. В нем для разработчиков есть возможность сделать свой форк и реализовать собственные блокчейны для разных целей. Однако, чтобы достичь этого результата, требуется снова возродить масштабный интерес среди разработчиков, который удавалось достичь прошлым итерациям блокчейн-технологий. Сегодня создание приложений поверх существующих сетей вроде Ethereum позволяет разработчикам быть заинтересованными не только в их собственных приложениях, но и в используемых протоколах.

Dapps, токены и смарт-контракты

Нынешние блокчейн-разработчики обычно создают распределенные приложения (dapps, сокращение от distributed apps) поверх существующих протоколов для того, чтобы решить конкретные бизнес-задачи и удовлетворять конечных пользователей. Таким образом, разработчики могут выпускать токены, или койны (app coins), которые используются для выполнения конкретных «функций» распределенных приложений, в отличии от «универсальных» токенов, которые используются как монетки для игровых автоматов. Эти функции и есть смарт-контракты, которые предоставляют сервисы распределенного приложения в обмен на цифровой актив, тем самым убирая необходимость в посреднике для проверки транзакций. Другими словами, смарт-контракты обещают, что за один токен вы получите одну партию за игровым автоматом.

По мере того, как функциональность распределенный приложений становится все более востребованной, стоимость фиксированного количества койнов приложений растет как функция спроса и предложения. Другими словами, если ваш игровой автомат оказывается по-настоящему запоминающимся и начинает пользоваться спросом, то ограниченное количество токенов начинает расти в цене. Это принцип, лежащий в основе ICO (initial coin offereing), в рамках которых разработчики занимаются сбором инвестиций предлагая койны в обмен на капитал для финансирования их проектов.

Но постойте, здесь вы можете спросить: «Почему бы не использовать существующий токен вместо того, чтобы выпускать свой, специфический для приложения?». Дело в том, что специфические токены конкретных распределенных приложений позволяют создавать мелкие экономики, которые способствуют осуществлению основного замысла приложения. Эти токены выступают в роли ограниченных ресурсов, которые можно регулировать согласно функциональности приложения. Здесь и приходит на помощь Ethereum: при помощи Ethereum разработчики могут с легкостью выпускать свои собственные токены.

Возможности на ранних этапах

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

На мета-уровне также существуют возможности для инноваций в стеке разработки. Многие блокчейн-разработчики сравнивают современное состояние инструментов и фреймворков с тем, что происходило в вебе в годы становления Интернета. Когда мы разговаривали об этом с Беном Ю из Stream, он описал это как новую возможность для разработчиков:

«Сейчас есть очевидная задача сделать блокчейн более доступным для широких масс, блокчейн нужно провести из 1994 года в 2018-ый, а для этого потребуется построить много технической инфраструктуры». Технологические инновации блокчейна многих натолкнули на идею построения нового, децентрализованного веб-стека, который будет независим от централизованных правительств и корпораций. Традиционный стек в вебе состоит из кирпичиков вроде TCP/IP, DNS, баз данных, веб-серверов, систем аутентификации и CDN, и мы в процессе воспроизведения этих компонентов при помощи базовых платформ вроде Ethereum.

Проблемы неизменяемости

К сожалению, технология похожая на ранние итерации JavaScript, почти всегда содержит в себе проблемы, самые частые из которых связаны с устойчивостью протоколов к фальсфикации. Разработчики не могут изменить лежащий в основе блокчейн или высокоуровневые смарт-контракты. Отсутствует простой способ версионирования библиотеки или контрактов. Недавний баг в Parity, который заблокировал средства объемом в 150 000 000 $, наряду с другими подобными инцидентами, лишний раз напоминает нам о необходимости построения надежных архитектур.

Брэндон Милман, разработчик в 0x, следующим образом описывает влияние неизменяемости блокчейна на безопасность:

«Когда вы занимаетесь этим, то вы должны быть гораздо осторожнее, чем обычно, поскольку речь идет о средствах других людей. Преимуществом парадигмы блокчейна является то, что, если вы надежно храните свой приватный ключ, другим людям крайне тяжело забрать ваши деньги; однако, многие мошенники постараются вынудить вас отправить деньги не туда для того, чтобы украсть их из вашего кошелька». Разработчики — особенно те, кто привык к бешеному темпу мира стартапов — вынуждены задумываться о компромиссах между скоростью и защищенностью. Бен Ю по этому поводу сказал:«Вы должны двигаться вперед максимально быстро, поскольку сфера растет невероятными темпами. Но вы не можете быстро что-то делать ломая уже готовое, несмотря на то, что такова на сегодня общепринятая философия среди разработчиков. Если вы случайно сломаете что-нибудь, то вы потеряете миллионы долларов» Разработка приложений на основе блокчейна требует совсем другого уровня планирования. Разработчики не смогут выкатывать хотфиксы или патчи по ночам, потому что у них не будет централизованного контроля надо всей системой. Вместо этого, внесение изменений системы зачастую будет вовлекать хард форки протоколов целиком — или, в некоторых случаях, включение других источников для параметров протокола, которые не так сильно завязаны на блокчейн.

Ограничения Ethereum

Помимо основных сложностей, связанных с неизменяемостью, Ethereum содержит в себе несколько ограничений, с которыми могут столкнуться блокчейн-разработчики. Одно из них состоит в том, что Ethereum не может получать доступ к данным в реальном времени за пределами блокчейна. Разработчики должны полагаться на сторонних провайдеров данных, называемых оракулами, для предачи информации из внешнего мира в умные контракты — например, погоды, случайных чисел или курсов валют.

Более того, спецификация Ethereum препятствует вычислениям в реальном времени. Обработка блока транзакций занимает до 15 секунд (что прямо-таки молниеносно в сравнении с 10 минутами, которые требуются биткоину). В результате, разработчики вынуждены писать асинхронный код, взаимодействующий с фронтенд-фреймворками, которые умеют работать с такой моделью обновления состояний (например React).

В случае с Ethereum, вы также связаны обязательством платить за свои транзакции, выполняя операции с «газом», который превращается в эфиры Ethereum. По этой причине при использовании текущей версии Solidity вы быстро упираетесь в лимит транзакций, если вычисления, которые вы пытаетесь выполнить, будут слишком дорогими (как, например, проверка на мат для игры в шахматы). В результате вычисления на блокчейне становятся весьма дорогостоящими в плане денег и нагрузки на сеть. Существуют интересные альтернативы (например, Truebit), позволяющие выполнять интенсивные вычисления вне сети.

Начало работы

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

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

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

Нельзя не упомянуть и сообщества для разработчиков: Если вы предпочитаете учиться на практике, вот вам несколько идей для проектов:
  • Создайте свой собственный кошелек. Это может быть веб, мобильное или десктоп-приложение.
  • Создайте свой собственный ERC-20 токен и разверните его в тестовой сети.
  • Замените криптокотиков на криптособачек, крпитотанки или криптозомби и разверните в тестовой сети.

Вперед в будущее

В своем нынешнем состоянии разработка под блокчейн достаточно беспорядочна. Здесь нет понятных фреймворков и инструментов, аналогичным тем, что применяются в современной веб-разработке. Но почему бы не отнестись к этому как к возможности повлиять на парадигму, которая становится вехой в развитии технологий?

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

От себя хотим обратить внимание и на русскоязычное сообщество блокчейн-разработчиков: Ну и конечно, пригласить на нашу специализированную конференцию DeCenter TokenConf про блокчейн-технологию. Это единственная конференция в России, целиком и полностью рассчитанная на аудиторию разработчиков блокчейна. За рамки программы принципиально вынесены все вопросы, касающиеся ICO, майнинга, криптовалют и спекуляций. Только чистая технология.

habr.com

Как разработать собственный блокчейн (часть 2)

Содержание

blockchainВ предыдущей части мы рассказали о двух самых популярных криптовалютах – Биткоине и Эфириуме.

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

Переходим к профессиональной разработке

На этом этапе вам стоит отказаться от Remix и перейти на серьезные инструменты разработки Solidity.

Большинство разработчиков рекомендуют использовать текстовые редакторы VSCode или Atom, так как в них есть неплохие плагины для Solidity. Для взаимодействия с локальным блокчейном вы можете использовать Ganache (бывший TestRPC), а также Truffle framework для запуска Javascript тестов и настройки взаимодействия.

Самое время обратить внимание на IPFS, который можно использовать в качестве полностью децентрализованного файлового хранилища, гораздо более дешевого, чем блокчейн Эфириума. Вот небольшое описание проекта от его создателя, Хуана Бенета (Juan Benet):

Для работы с полными нодами Эфириума и IPFS большинство разработчиков советуют использовать Infura. Etherscan и ETH Gas Station предоставляют полезную статистику работы сети Эфириума.

После того как у вас полностью собраны Web3 инструменты, попробуйте запустить Dapp (децентрализованное приложение). Это пособие дает отличный обзор применения Node в связке с Postgres на стороне сервера, а здесь вы узнаете, как создать полностью децентрализованное приложение с использованием IPFS в качестве слоя хранения данных.

Реализация собственных проектов

Сейчас вы должны уже неплохо разбираться в технических особенностях. Пора переходить к фактической разработке и реальному участию в жизни блокчейн-сообщества.

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

Но я бы все-таки порекомендовал найти активно развивающийся проект, поклонником которого вы являетесь. Зайдите к ним в Slack или Rocketchat – обычно, разработчики охотно там отвечают. Предложите помощь и попросите себе несколько небольших задач (или поищите нерешенные задачи в их Github).

Учтите, что хоть я и делаю основной упор на разработку протоколов и смарт-контрактов, в блокчейн-компаниях часто требуются и веб-разработчики для настройки основного функционала. Эти роли часто пересекаются с блокчейнами, поэтому важно понимать, как они работают. Однако, работа большинства инженеров в блокчейн-стартапах заключается в поднятии веб-сервера Python, создании интерфейса на React, а взаимодействие с блокчейном может составлять лишь небольшую ее часть. Вам необязательно нужно специализироваться на разработке смарт-контрактов – на самом деле, это лишь часть работы над блокчейном.

Помимо проектов с открытым кодом, постоянно проводится большое количество блокчейн-хакатонов. У многих проектов есть открытый Slack, а у самого Эфириума – очень активный канал Gitter, в котором постоянно сидит много разработчиков. По мере погружения в эту сферу, вы найдете единомышленников с опытом, сопоставимым с вашим – неважно, в Slack, Telegram или Gitter. Ищите своих людей и продолжайте учиться.

Как ориентироваться в блокчейн-сообществе

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

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

Информационные каналы

Есть три прекрасных подкаста: Software Engineering Daily Blockchain interviews, в которых есть много технической информации начального уровня по разным темам, в том числе и криптовалютам. Также я могу посоветовать Epicenter и Unchained – думаю, вам будет интересно прослушать немало предыдущих эпизодов. Conspiratus – еще один интересный технический подкаст. На вашем месте я бы подписался на них все.

Есть несколько приличных Youtube каналов (хотя много и мусора). Ethereum Foundation публикует презентации с Devcon3. Blockchain at Berkeleyвыкладывает записи многих своих лекций, в которых можно найти отличные технические обзоры. Decypher Media размещает обсуждения и обзоры белых книг и пособий. Jackson Palmer выпускает отличные еженедельные обзоры, они содержат меньше технических подробностей, но сделаны очень качественно.

Чтение и общение онлайн

Онлайн-общение на тему блокчейнов ведется, преимущественно, в двух местах: Reddit и Twitter. Большинство сабреддитов содержит множество бесполезной информации плохого качества. На r/Ethereum поддерживается стабильно высокое качество информации (есть еще несколько неплохих сабреддитов для отдельных криптовалют). Большинство же сабреддитов по преимуществу оккупированы болтунами, и не стоят вашего внимания. Держитесь подальше от сабреддитов, посвященных Биткоину. У Биткоина на данный момент одно из наиболее токсичных сообществ, и Reddit – не исключение.

В Twitter намешано много всего. Хорошо это или плохо, но большинство представителей блокчейн-сообщества обитают именно там. Твиттер блокчейн-сообщества для меня – загадка, но со временем я выработал некую стратегию в его отношении. С моей точки зрения, в блокчейн-сообществе присутствует 5 типов людей: разработчики, предприниматели, журналисты, трейдеры, и «лидеры мнений».

Любой ценой избегайте «лидеров мнений». Предприниматели могут быть полезными, но в основном они заняты продвижением собственных проектов. Инвесторы обычно говорят о ценах и популярных проектах. Возможно, это именно то, что вам нужно. Журналисты обычно говорят об основных событиях дня, и я бы советовал держаться от них подальше – вряд ли вам нужен анализ всех актуальных событий в реальном времени. Это может быть полезно в том случае, если вы активно заняты трейдингом, но если вы собираетесь стать блокчейн разработчиком, большая часть информации в реальном времени только отвлекает.

Уделите наибольшее внимание разработчикам. Сейчас они – самые важные люди. Именно они двигают технологию вперед.

Вот несколько представителей каждой категории (если хотите заполнить свою ленту новостей, посмотрите, на кого подписаны эти люди в Twitter):

Разработчики:

  • Виталик Бутерин, Эфириум
  • Зуко Уилкокс (Zooko Wilcox), Zcash
  • Ник Сабо (Nick Szabo), изобретатель смарт-контрактов
  • Влад Замфир (Vlad Zamfir), Эфириум
  • Марко Сантори (Marco Santori), Cooley LLP
  • Риккардо Спаньи (Riccardo “fluffypony” Spagni), Monero
  • Мэтт Листон (Matt Liston), Gnosis

Предприниматели

  • Баладжи Шринивасан (Balaji Srinivasan), Earn.com
  • Эрик Вурхис (Erik Voorhees), Shapeshift

Инвесторы

  • Наваль Равикант (Naval Ravikant), MetaStable
  • Ари Пол (Ari Paul), Blocktower Capital
  • Линда Сье (Linda Xie), Scalar Capital
  • Крис Барниск (Chris Burniske), Placeholder

Журналисты

  • Туур Демеестер (Tuur Demeester), Adamant Research
  • Лора Шин (Laura Shin), Forbes

С учетом всего сказанного, я бы посоветовал вам минимизировать свое присутствие на Reddit и в Twitter. Если вы журналист или дейтрейдер, есть шанс найти что-то полезное, но чаще всего лента новостей и чат вам не пригодятся. Важная информация будет приходить к вам в свое время. Есть несколько хороших новостных журналов, которые собирают самые важные новости за день или неделю, которые вы сможете изучать в относительно свободное время.

Я советую подписаться на Inside Bitcoin. В нем публикуются самые важные новости из мира криптографии (не только из Биткоина). Token Economy публикует прекрасные еженедельные материалы по токен-проектам, а Week in Ethereum описывает ориентированные на разработчиков события в экосистеме Эфириума.

Скорее всего, вам не потребуется искать новости где-то еще. Сконцентрируйтесь на обучении и практической разработке.

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

  • Виталик Бутерин публикует отличные аналитические материалы по блокчейну и криптоэкономическому анализу (также изучите посты его старого блога, Виталик не зря считается одним из лучших умов своего поколения)
  • Hacking, Distributed публикует аналитику по безопасности блокчейнов от компании Cornell.
  • Unenumerated — отличный блог Ника Cабо, в котором есть вызывающие и эклектичные эссе о роли криптовалют в обществе.
  • Money Stuff — дочернее СМИ Bloomberg под руководством Мэтта Левина с четкими и важными аналитическими материалами, затрагивающими рынки, финансовую сферу и новости блокчейнов.
  • Влад Замфир публикует взвешенные и выдержанные прогнозы по частным и публичным блокчейнам.
  • Крис Барниск выложил серию отличных постов о методах оценки криптографических активов.
  • Джеймсон Лопп (Jameson Lopp) публикует прекрасные технические посты об экосистеме Биткоина с точки зрения разработчика программного обеспечения.
  • Great Wall of Numbers от Тима Суонсона (Tim Swanson), с его твердыми и рассудительными разоблачениями биткоин-мании, особенно в корпоративной сфере.

Книги и курсы

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

Лучшая книга на тему блокчейнов в целом – это Bitcoin and Cryptocurrency Technologies (с дополнениями из курса Princeton Coursera). Я посоветую еще одну книгу, Mastering Bitcoin от Андреаса Антонопулоса, а также планируемую к выходу Mastering Ethereum в соавторстве с сооснователем Ethereum Гэвином Вудом (обе выйдут в издательстве O’Reilly). Единственная не-техническая книгая, которую я могу посоветовать, это Digital Gold от Натаниэла Поппера (Nathaniel Popper). Вся остальная достойная прочтения информация находится в блогах, а не в книгах. Эта сфера меняется с такой скоростью, что ее ключевые участники редко могут выделить время на написание книги, а сами книги к моменту выхода, скорее всего, уже устареют.

Также есть несколько приличных курсов (и множество некачественных). Чуть раньше я уже давал ссылки на пару хороших лекций из Princeton Coursera Course (их видеоверсии есть на YouTube) и из UC Berkeley Decal. Также я слышал, что в Consensys Academy есть несколько хороших материалов для тех, что хочет изучить разработку смарт-контрактов.

Как получить работу

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

Существует несколько хороших агрегаторов публикуемых вакансий в этой сфере:

  • AngelList crypto startups
  • BlockchainJobz
  • Ethereum Jobs
  • Be in Crypto
  • Blockchain Job Board
  • Crypto Jobs List
  • Google jobs (запрос по блокчейну)
  • ConsenSys jobs (венчурная студия разработки в среде Ethereum с огромным количеством проектов)

Несколько известных мне перспективных блокчейн стартапов ищут разработчиков:

Также на рынке крипто-вакансий присутствуют несколько крупных компаний:

  • Coinbase – Google в криптомире – всегда нуждается в сотрудниках.
  • Stellar и Ripple, если вы хотите работать над криптовалютами, ориентированными на использование корпорациями.
  • Square внедрил некий блокчейн, но я неуверен, ищут ли они в данный момент сотрудников.
  • IBM, Visa, или JP Morgan, если вас привлекают традиционные компании

Однако, лучший способ получить работу в компании, на мой взгляд – это найти интересующий вас проект и обратиться к ним напрямую. Большинство блокчейн-команд не против нанять правильного сотрудника на удаленную работу. Многие разработчики доступны в Twitter, Github или в своих открытых каналах Slack. Если у вас есть хорошее портфолио и/или вы способны продемонстрировать свои технические навыки, вы сможете произвести впечатление на многих – надо лишь проявить инициативу.

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

Кроличья нора

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

Не останавливайтесь на достигнутом. Не переставайте учиться. Растите над собой.

Будь в курсе! Подписывайся на Криптовалюта.Tech в Telegram

ecrypto.ru

Как разработать собственный блокчейн

Содержание

blockchainКриптовалюты, ICO, волшебные интернет-деньги – все это звучит очень привлекательно. И вы, возможно, хотите с головой окунуться во все это безумие. Но с чего начать?

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

С тех пор как я ушел из Airbnb и стал работать с блокчейнами, я получил много вопросов о том, как можно научиться профессионально их разрабатывать. Что ж, перед вами мое авторитетное (но далеко не всеобъемлющее) руководство по основам разработки блокчейнов.

Зачем учиться разработке блокчейнов

Прежде чем я отвечу на этот вопрос, позвольте кое-что уточнить: сейчас блокчейн крайне переоценен. Сегодняшние цены очень нестабильны, и с уверенностью можно сказать, что их обвал неизбежен. Подобное уже случалось раньше, и, скорее всего, произойдет снова. Но если вы собираетесь работать в этой области достаточно долго, то со временем вы перестанете обращать внимание на цены. Как сказал Эмин Гюн Сирер (Emin Gun Sirer), цена – это наименее интересный аспект криптовалют. Технологии же обладают огромной важностью, и они необратимо изменят наш мир.

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

  • Технология все еще находится на ранних стадиях развития.

Биткоин был изобретен 10 лет назад, но лишь в последние 2 года темп инноваций в этой сфере значительно ускорился, особенно с запуском Ethereum в 2015 году. Основная часть новых идей и компаний построены на базе Ethereum – технологии, которая сама еще является очень незрелой.

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

  • Отсутствие серьезного кадрового резерва.

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

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

  • Большая часть инноваций происходит вне академических кругов.

Как мы знаем, Сатоши Накамото (Satoshi Nakamoto) не обладал ученой степенью. На данный момент нет ни одного высшего учебного заведения, которое бы предлагало серьезное изучение блокчейн-технологий. Авторами большей части инноваций становились энтузиасты, предприниматели и независимые разработчики. Почти все, что вам нужно знать, содержится в Белых книгах, записях блогов, публичных каналах Slack и программах с открытым кодом. Вам остается лишь засучить рукава и взяться за изучение всех этих материалов.

  • Спрос на талантливых сотрудников намного превосходит предложение.

Этой сфере банально не хватает разработчиков, и их невозможно быстро обучить. За каждого талантливого разработчика блокчейнов разворачивается нешуточная борьба, и многие проекты испытывают нехватку человеческих ресурсов. Даже лучшие компании не всегда способны предложить достаточное вознаграждение – слишком много на рынке других возможностей. Если вы обладаете нужными навыками, то вам легко будет найти работу.

  • Криптовалюты — это круто!

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

В своем недавнем интервью Наваль Равикант (Naval Ravikant) сказал:

“Ключ к успеху заключается в том, чтобы предложить обществу то, что оно хочет, но не знает, как этого достичь. И вас не научат этому в школе, иначе этого «что-то» было бы уже достаточное количество”.

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

Итак, вы готовы попробовать? Но давайте сперва обсудим, что вам нужно знать прежде, чем бросаться в бой.

Необходимые условия

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

Вот список тем, с которыми вам стоит познакомиться, в порядке убывания важности.

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

Информатика

Структуры данных

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

Криптография

Криптография – краеугольный камень криптовалют. Все криптовалюты для идентификации применяют криптографические алгоритмы с использованием открытых и закрытых ключей. Я бы порекомендовал начать их изучение с алгоритма RSA (он довольно простой и не требует серьезной математической подготовки), а затем переходить к ECDSA. Эллиптическая криптография требует понимания значительно более абстрактной математики. Знать все нюансы не столь важно, но надо понимать, что этот алгоритм используется в большинстве криптовалют, включая Биткоин.

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

Распределенные системы

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

Как только вы выходите за рамки одной машины, вы должны позаботиться о согласованности данных и консенсусе. Вы должны понимать разницу между линеаризуемой моделью и моделью согласованности в конечном счете. Также желательно знать особенности отказоустойчивых алгоритмов консенсуса, таких как Paxos и RAFT. Понимать сложности временных конфликтов в распределенных системах. Понимать компромисс между безопасностью и удобством.

Изучив это, вы сможете понять сложность решения задачи византийских генералов – основного требования безопасности публичных блокчейнов. Также вы, наверное, захотите узнать о PBFT, одном из первых масштабируемых алгоритмов, обеспечивающих решение задачи византийских генералов. На основе PBFT созданы большинство блокчейн алгоритмов коненсуса помимо proof-of-work. Вам опять-таки не нужно понимать все детали строения и работы PBFT – нужно лишь понять его основную идею и уровень безопасности.

Кроме того, очень полезно будет знать основные методы распределения баз данных (по сути своей, блокчейны – это не что иное, как базы данных). Почитайте о шардинге (например, через консистентное хеширование), однонаправленной репликации и согласованных коммитах. Просмотрите информацию о распределенных хэш-таблицах (DHT), таких как Chord и Kademlia.

Организация сетей

Децентрализация блокчейнов в значительной степени происходит из их сетевой peer-to-peer топологии. То есть, блокчейны являются прямыми потомками P2P сетей.

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

Публичные блокчейны обычно распространяют сообщения на основе gossip-протоколов лавинным методом. Полезно будет знать историю разработки архитектуры P2P сетей, от Napster и Gnutella до BitTorrent и Tor. Блокчейны стоят несколько обособленно, но их архитектура основывается на опыте использования сетей прошлых поколений.

Экономика

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

Теория игр

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

В вашем арсенале должны присутствовать две ключевые концепции: равновесие Нэша и фокальные точки, так как они играют важную роль в криптоэкономическом анализе.

Макроэкономика

Криптовалюты – это не только протоколы, это еще и форма денежных средств. Именно поэтому они подчиняются законам макроэкономики (если их можно назвать законами). Криптовалюты регулируются различными монетарными политиками, а также предсказуемо реагируют на инфляцию и дефляцию. Вы должны понимать эти процессы и их влияние на накопление, потребление и т. д.

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

Микроэкономика

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

Я подозреваю, что с некоторыми из этих тем вы уже знакомы. В таком случае вы можете смело пропустить эти разделы.

Итак, вы пересмотрели и подтянули свои базовые знания (а может быть, пропустили этот момент – никто ведь не смотрит). Давайте теперь переходить к разработке блокчейнов.

Источник: cryptocurrency.tech

 

ecrypto.ru

Как разработать собственный блокчейн

Содержание

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

В этой части мы расскажем о двух самых популярных криптовалютах – Биткоине и Эфириуме.

Теоретические основы Биткоина

В октябре 2008 года Сатоши Накамото опубликовал белую книгу, в которой описал протокол децентрализованной цифровой валюты. Он назвал этот протокол Bitcoin.

Прежде чем приступить к изучению основных идей блокчейнов, вам нужно начать с Биткоина и понять изначальное видение Сатоши.

Для начала я рекомендую познакомиться с протоколом Proof-of-Work и правилом выбора форка (также известном как консенсус Накамото). Начните с этого видео:

Рекомендую посмотреть еще несколько видеоматериалов, чтобы эта идея прочно закрепилась в вашем сознании.

Прекрасно. А эта статья поможет сформировать более глубокое и цельное понимание того, как работают важнейшие компоненты сети Биткоина.

Строим блокчейн

Теперь, когда вы получили нужные знания, можно попробовать собрать собственный блокчейн на основе Proof-of-Work. Не бойтесь, это только звучит страшно. Чуть ниже я перечислю несколько ресурсов, которые смогут вам помочь.

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

Источник и слайды лежат здесь.

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

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

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

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

Это хороший момент, чтобы ознакомиться с историей Биткоина и других криптовалют. В видео ниже, предоставленном UC Berkeley Decal, вы найдете отличный обзор этой темы:

Вот некоторые дополнительные ресурсы:

  • Научные предшественники Биткоина
  • Механика Биткоина: Код Биткоина и UTXO (программный код Биткоина не так уж и важен, просто познакомьтесь с его возможностями)
  • Краткий гид по форкам Биткоина
  • Софт-форки и сигнализирование майнеров
  • Двойные траты, атаки 51% и корыстный майнинг
  • Атаки повторения
  • Проблема масштабируемости Биткоина, основной источник проблем в экосистеме Биткоина. Вы должны понимать, почему люди в Биткоин-сообществе так ожесточенно спорят по поводу размеров блока.
  • Segregated witness, он же SegWit – не самое необходимое знание, но очень часто упоминаемая тема.
  • Lightning Network, одно из наиболее популярных решений проблем масштабируемости для Биткоина, равно как и для многих других блокчейнов.
  • Полные ноды Биткоина, статистика по комиссиям Биткоина, графики, графики и еще раз графики.
  • Индекс энергопотребления Биткоина (на момент публикации майнинг биткоинов потребляет столько же энергии, сколько Перу)
  • Проницательное эссе от Gwern на тему разрозненности и неэлегантности Биткоина.
  • При желании вы сможете найти множество дополнительных материалов на странице Джеймсона Лоппа (Jameson Lopp).

Эфириум и разработка смарт-контрактов

После того как вы построили блокчейн и поняли динамику сети Биткоин, пришло время вплотную заняться Эфириумом.

Вы уже знаете, как блокчейн и правило Proof-of-Work обеспечивают распределенное решение задачи византийских генералов в peer-to-peer сетях. Но платежная система – это лишь одна из возможных реализаций подобного блокчейна. Виталику Бутерину, создателю Ethereum, в 2013 году пришла в голову идея: что, если использовать блокчейн для создания децентрализованного компьютера?

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

Мы подошли к смарт-контрактам – так называются программы, запускаемые на подобных виртуальных машинах. В ходе выполнения программы смарт-контракт может напрямую взаимодействовать с криптовалютой блокчейна. То есть вы можете создать финансовые контракты, которые автоматически обеспечивают сами себя. Это совершенно потрясающая идея, на основе которой можно реализовать абсолютно футуристические идеи.

Появление Эфириума привело к целой волне ICO и притоку разработчиков приложений на основе блокчейнов. Сегодня Ethereum является второй по популярности криптовалютой после Биткоина, у него сильнейшая команда, в которой более чем в 10 раз больше разработчиков, чем у следующего за ним конкурента, наиболее развитый инструментарий, и поэтому огромное количество проектов и ICO построено именно на основе Эфириума. Также он давно пользуется мощнейшей поддержкой сообщества. Если вы занимаетесь блокчейн-разработкой, вероятнее всего, вы пишете код смарт-контрактов для Ethereum. И даже если это не так, имеет смысл знать, что происходит в этой сфере.

Начнем с более развернутого объяснения Эфириума:

Идеи, лежащие в основе Эфириума, привели к целой волне инноваций в области криптоэкономики. Изучите идеи, послужившие основой для создания децентрализованных автономных организаций (DAO) и сопутствующие им футуристические мечты.

Так, довольно фантазий, вернемся к техническим деталям.

Здесь находится отличный обзор желтой книги Эфириума и его составляющихот Прити Касиреди (Preethi Kasireddy). Эфириум использует учетную модель в отличие от UTXO-модели Биткоина. Вскоре вы поймете, почему эта модель упрощает написание смарт-контрактов.

Лучший способ познакомиться с Эфириумом (как и с любой другой технологией) – реализовать на нем несколько небольших проектов.

Основным языком программирования Эфириума является Solidity – статически типизированный, похожий на JavaScript язык с множеством шероховатостей и спорных решений. Как только более надежные языки – например, Viper – будут готовы к использованию, они смогут заменить Solidity, но сегодня именно он является своеобразным эсперанто при разработке смарт-контрактов. По сути, это JavaScript Эфириума, и вам нужно его изучить (вместе с его подводными камнями).

Я рекомендую вам начать с пособия CryptoZombies. Это очень качественное пособие, похожее на материалы от Codecademy, в котором описаны основы разработки на Solidity.

Теперь, после того как вы немного подогрели свой интерес, приступим к собственно разработке.

Аналогом “hello world” в мире Эфириума является разработка ERC-20 токена. В качестве первой инструкции по этому процессу я рекомендую этот материал.

Remix – это браузерный редактор и компилятор Solidity. По сути, это тренажер разработки в среде Ethereum, поэтому я рекомендую с этого момента все практические занятия выполнять в нем. Вам также стоит поднять локальный блокчейн и опробовать инструментарий Эфириума. Это пособие поможет вам построить блокчейн и расскажет обо всех его компонентах.

На следующем этапе я бы построил систему голосования. Назовем ее Первое Приложение Эфириума. У Карла Флерша (Karl Floersch) есть отличный гайд по разработке безопасной системы голосования по схеме «коммит-раскрытие».

Отлично, теперь небольшая проверка: смоделируйте безопасную игру, в которой два игрока смогут безопасно сделать ставки на результат подбрасывания монетки. На этот раз я не даю вам инструкций, реализуйте ее самостоятельно. Подумайте о том, каким образом участники могут мошенничать? Какие могут быть атаки на эту игру? Можете ли вы обеспечить добросовестное поведение обоих игроков? Здесь вы найдете несколько ценных советов.

Безопасность смарт-контрактов

В разработке блокчейнов важнейшую роль играет безопасность. Смарт-контракты несколько раз подвергались разрушительным взломам, таким как взлом DAO, взлом Parity, и последующий взлом Parity 2 (на этот раз даже с фирменной футболкой). Если вы хотите писать смарт-контракты, то вам обязательно нужно изучить аналитику по всем этим случаям взлома.

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

Как у разработчика смарт-контрактов, ваше стремление к безопасности должно граничить с паранойей. Здесь не подходит правило Кремниевой долины “move fast and break things” (“действуй быстро и ломай все, что мешает”). Это значит, что код, обрабатывающий денежные потоки, должен быть вначале обработан статическими анализаторами типа Oyente или Securify, затем тщательно протестирован, и в конце отправлен на проверку опытному аудитору в области смарт-контрактов. Вам также стоит ориентироваться на уже проверенные программные компоненты, например, открытые контракты OpenZeppelin.

Для развития навыков в области безопасности, пройдите The Ethernaut, игру от OpenZeppelin, в которой нужно отыскать и устранить уязвимости в смарт-контрактах. Многие из описанных уязвимостей привели к реальным атакам на смарт-контракты.

У Фила Дайана (Phil Daian) тоже есть отличный набор заданий на взлом смарт-контрактов под названием Hack This Contract.

После этого, я крайне советую вам полностью прочитать Лучшие практики смарт-контрактов (Smart Contract Best Practices), собранные ConsenSys. Вам еще не раз придется возвращаться к этому документу в своей карьере разработчика смарт-контрактов. Экспертам в области безопасности стоит ознакомиться с материалами из этой подборки.

Источник: cryptocurrency.tech

ecrypto.ru

Руководство по разработке блокчейнов (Часть 1)

блокчейн

Криптовалюты, ICO, волшебные интернет-деньги – все это звучит очень привлекательно. И вы, возможно, хотите с головой окунуться во все это безумие. Но с чего начать?

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

С тех пор как я ушел из Airbnb и стал работать с блокчейнами, я получил много вопросов о том, как можно научиться профессионально их разрабатывать. Что ж, перед вами мое авторитетное (но далеко не всеобъемлющее) руководство по основам разработки блокчейнов.

Оно состоит из 10 частей:

  1. Зачем учиться разработке блокчейнов
  2. Необходимые условия
  3. Теоретические основы Биткоина
  4. Строим блокчейн
  5. Ethereum и разработка смарт-контрактов
  6. Безопасность смарт-контрактов
  7. Переходим на профессиональную разработку
  8. Реализуем свои проекты
  9. Как ориентироваться в блокчейн-сообществе
  10. Как получить работу

Зачем учиться разработке блокчейнов

Прежде чем я отвечу на этот вопрос, позвольте кое-что уточнить: сейчас блокчейн крайне переоценен. Сегодняшние цены очень нестабильны, и с уверенностью можно сказать, что их обвал неизбежен. Подобное уже случалось раньше, и, скорее всего, произойдет снова. Но если вы собираетесь работать в этой области достаточно долго, то со временем вы перестанете обращать внимание на цены. Как сказал Эмин Гюн Сирер (Emin Gun Sirer), цена – это наименее интересный аспект криптовалют. Технологии же обладают огромной важностью, и они необратимо изменят наш мир.

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

  1. Технология все еще находится на ранних стадиях развития.

Биткоин был изобретен 10 лет назад, но лишь в последние 2 года темп инноваций в этой сфере значительно ускорился, особенно с запуском Ethereum в 2015 году. Основная часть новых идей и компаний построены на базе Ethereum – технологии, которая сама еще является очень незрелой.

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

  1. Отсутствие серьезного кадрового резерва.

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

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

  1. Большая часть инноваций происходит вне академических кругов.

Как мы знаем, Сатоши Накамото (Satoshi Nakamoto) не обладал ученой степенью. На данный момент нет ни одного высшего учебного заведения, которое бы предлагало серьезное изучение блокчейн-технологий. Авторами большей части инноваций становились энтузиасты, предприниматели и независимые разработчики. Почти все, что вам нужно знать, содержится в Белых книгах, записях блогов, публичных каналах Slack и программах с открытым кодом. Вам остается лишь засучить рукава и взяться за изучение всех этих материалов.

  1. Спрос на талантливых сотрудников намного превосходит предложение.

Этой сфере банально не хватает разработчиков, и их невозможно быстро обучить. За каждого талантливого разработчика блокчейнов разворачивается нешуточная борьба, и многие проекты испытывают нехватку человеческих ресурсов. Даже лучшие компании не всегда способны предложить достаточное вознаграждение – слишком много на рынке других возможностей. Если вы обладаете нужными навыками, то вам легко будет найти работу.

  1. Криптовалюты — это круто!

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

В своем недавнем интервью Наваль Равикант (Naval Ravikant) сказал:

“Ключ к успеху заключается в том, чтобы предложить обществу то, что оно хочет, но не знает, как этого достичь. И вас не научат этому в школе, иначе этого «что-то» было бы уже достаточное количество”.

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

Итак, вы готовы попробовать? Но давайте сперва обсудим, что вам нужно знать прежде, чем бросаться в бой.

Необходимые условия

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

Вот список тем, с которыми вам стоит познакомиться, в порядке убывания важности.

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

Информатика

Структуры данных

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

Криптография

Криптография – краеугольный камень криптовалют. Все криптовалюты для идентификации применяют криптографические алгоритмы с использованием открытых и закрытых ключей. Я бы порекомендовал начать их изучение с алгоритма RSA (он довольно простой и не требует серьезной математической подготовки), а затем переходить к ECDSA. Эллиптическая криптография требует понимания значительно более абстрактной математики. Знать все нюансы не столь важно, но надо понимать, что этот алгоритм используется в большинстве криптовалют, включая Биткоин.

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

Распределенные системы

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

Как только вы выходите за рамки одной машины, вы должны позаботиться о согласованности данных и консенсусе. Вы должны понимать разницу между линеаризуемой моделью и моделью согласованности в конечном счете. Также желательно знать особенности отказоустойчивых алгоритмов консенсуса, таких как Paxos и RAFT. Понимать сложности временных конфликтов в распределенных системах. Понимать компромисс между безопасностью и удобством.

Изучив это, вы сможете понять сложность решения задачи византийских генералов – основного требования безопасности публичных блокчейнов. Также вы, наверное, захотите узнать о PBFT, одном из первых масштабируемых алгоритмов, обеспечивающих решение задачи византийских генералов. На основе PBFT созданы большинство блокчейн алгоритмов коненсуса помимо proof-of-work. Вам опять-таки не нужно понимать все детали строения и работы PBFT – нужно лишь понять его основную идею и уровень безопасности.

Кроме того, очень полезно будет знать основные методы распределения баз данных (по сути своей, блокчейны – это не что иное, как базы данных). Почитайте о шардинге (например, через консистентное хеширование), однонаправленной репликации и согласованных коммитах. Просмотрите информацию о распределенных хэш-таблицах (DHT), таких как Chord и Kademlia.

Организация сетей

Децентрализация блокчейнов в значительной степени происходит из их сетевой peer-to-peer топологии. То есть, блокчейны являются прямыми потомками P2P сетей.

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

Публичные блокчейны обычно распространяют сообщения на основе gossip-протоколов лавинным методом. Полезно будет знать историю разработки архитектуры P2P сетей, от Napster и Gnutella до BitTorrent и Tor. Блокчейны стоят несколько обособленно, но их архитектура основывается на опыте использования сетей прошлых поколений.

Экономика

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

Теория игр

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

В вашем арсенале должны присутствовать две ключевые концепции: равновесие Нэша и фокальные точки, так как они играют важную роль в криптоэкономическом анализе.

Макроэкономика

Криптовалюты – это не только протоколы, это еще и форма денежных средств. Именно поэтому они подчиняются законам макроэкономики (если их можно назвать законами). Криптовалюты регулируются различными монетарными политиками, а также предсказуемо реагируют на инфляцию и дефляцию. Вы должны понимать эти процессы и их влияние на накопление, потребление и т. д.

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

Микроэкономика

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

Я подозреваю, что с некоторыми из этих тем вы уже знакомы. В таком случае вы можете смело пропустить эти разделы.

Итак, вы пересмотрели и подтянули свои базовые знания (а может быть, пропустили этот момент – никто ведь не смотрит). Давайте теперь переходить к разработке блокчейнов.

(Продолжение следует)

Будь в курсе! Подписывайся на Криптовалюта.Tech в Telegram

cryptocurrency.tech