Мотивация и предыстория:

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

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

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

Отсюда мой интерес к QuickBlocks. QuickBlocks обещал сделать намного проще и быстрее получение данных с узла Ethereum. Я был в восторге, узнав о проекте с открытым исходным кодом (благодаря отличному информационному бюллетеню Эвана Ван Несса Неделя в Ethereum), который позволил бы мне использовать мой собственный узел Ethereum для изучения вопросов, которые у меня возникли о внутренней работе блокчейна Ethereum. В частности, я хотел запустить программы, которые отслеживали бы интересующие токены ERC20, чтобы увидеть, не скрыто ли что-нибудь в данных. Потенциальные варианты использования безграничны, и веб-сайт QuickBlocks неплохо справляется с изложением этих вариантов использования. Но сначала мне нужно было научиться пользоваться программой. Вот моя история использования QuickBlocks, изучения C ++ и пара уроков, которые я извлек из самого Ethereum:

QuickBlocks и поиски лучших данных Ethereum:

В течение трех лет, наблюдая за криптопространством на расстоянии, я изучил основы работы с собственными узлами Биткойн и Эфириум, различия между различным программным обеспечением кошельков, исследователей блокчейнов и самые основы программирования. Что касается программирования, я начал с Python, потому что, похоже, это был модный язык, который использовали начинающие специалисты по данным. Когда я услышал о QuickBlocks, я решил также попробовать свои силы в C ++, надеясь, что мой небольшой опыт работы с Python поможет мне быстрее изучить C ++. После начального курса Удеми я был достаточно опасен, чтобы попробовать.

Начать с QuickBlocks было достаточно легко. Я просто следовал шагам на Github, чтобы установить программу QuickBlocks на свой компьютер. Успех! Все идет нормально. Теперь, когда программное обеспечение было успешно установлено, возник следующий большой вопрос: как мне его использовать ??? Это было нетривиально, так как у меня очень мало знаний о C ++. В следующем разделе освещаются основы работы с программами на C ++, которые, вероятно, воспринимаются большинством разработчиков как должное. Следующую тему можно пропустить, если вы опытный программист на C ++ и знакомы с make-файлами и настройкой среды IDE, но может служить руководством для таких, как я.

Запуск программы Quickblocks

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

Однако документация явно написана для тех, кто имеет опыт компиляции и запуска таких программ. По своей наивности я предположил, что могу просто скомпилировать программу, запустив g ++ -Wall -std = c ++ 11 simple.cpp в терминале. Я быстро обнаружил, что мое предположение было неверным.

Первый урок C ++: вам нужно будет установить ссылку на каталог файлов заголовков и передать соответствующие флаги компоновщика для библиотек. Спросив в QuickBlocks Slack (мистер Раш очень мне помогает), я узнал, что я слишком много работал! Все, что мне нужно было сделать, это использовать make-файл из папки с примерами. Я пропустил это, потому что, честно говоря, я даже не знал, что нужно это искать. При использовании make-файла вся компиляция будет сделана за меня со всеми правильными флагами, переданными просто путем ввода команды make.

Успех!

Здорово! Теперь я знаю, как скомпилировать и запустить программу (чтобы запустить ее, найдите исполняемый файл в папке bin, которая создается при запуске make). Чтобы изменить их, не нужно много знать о make-файлах, если вы хотите запустить собственную программу. Это замечательно, если вы полностью понимаете программу, которую пишете, и ее ожидаемый результат. Однако мне хотелось получить больше информации о том, как работают разные классы QuickBlock. Я хотел наблюдать, как переменные моей программы изменяются во время выполнения, а также отслеживать использование памяти и процессора. Я стараюсь лучше понять, если могу приостановить программу, посмотреть переменные и перейти к функциям. Иногда вы можете уловить неожиданные тенденции в данных! Подробнее об этом позже. IDE позволила бы мне выполнить все это.

Настройка IDE оказалась не такой тривиальной, как я надеялся. Все разные. Чтобы заставить его правильно скомпилировать программу, вам необходимо убедиться, что правильные файлы заголовков и библиотеки связаны при компиляции программы в среде IDE. Я использовал make-файл, чтобы выяснить путь к файлам заголовков, которые нужно включить (/ usr / local / qblocks / include), а также нужные библиотеки для связывания (-lwallet -ltoken -lacct -lether -lutil -lcurl). Чтобы выяснить, где изменить эти параметры, потребовалось некоторое время, и я не буду вдаваться в подробности, поскольку это во многом зависит от того, какую среду IDE вы выберете. Но если вы в конечном итоге перейдете на XCode, то я нашел следующую статью очень полезной при настройке моего проекта.

Следующий…

Во второй части я расскажу об основах запуска программы QuickBlocks и настройки программы очистки учетных записей.