Ethereum Classic на Raspberry Pi

1_g8vz2kuuyntc2jynzh5_1q1

Одними из наиболее важных секторов рынка для Ethereum Classic всегда были кибербезопасность и интернет вещей (IoT). При наличии полного по Тьюрингу блокчейна, который следует принципам неизменности транзакций и невмешательства, мы получаем идеального кандидата для создания сети, способной защитить устройства IoT.

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

Я начал изучать возможности IoT с ETC и для этого решил создать собственный проект. Это руководство состоит из нескольких частей. В нем содержатся мои практические рекомендации относительно IoT, ETC и всего, что связано с Raspberry.

Первая часть посвящена настройке Raspberry Pi и запуску на нем кросс-скомпилированной версии Parity для сети Classic. Parity — очень популярный клиент Ethereum Virtual Machine (EVM), который может работать в нескольких сетях, таких как ETC и ETH.

Требования к оборудованию

1_0bw0fbenkrkp17gyzc80ng2

Raspberry Pi 3 Model B

Для этого проекта понадобится следующее оборудование:

  1. Raspberry Pi 3 Model B;
  2. карта Micro SD;
  3. картридер с поддержкой Micro SD;
  4. сетевой кабель;
  5. источник питания с разъемом Micro USB.

Настраивать Raspberry Pi мы будем без использования USB-клавиатур, мониторов или других устройств. Мы настроим его так, чтобы при запуске можно было напрямую подключаться к нему по SSH. Вы должны уметь работать с командной строкой. Если не умеете, то моих указаний и команд должно быть достаточно для того, чтобы вы могли самостоятельно разобраться в этом вопросе.

Настраивать Raspberry Pi мы будем с помощью OS X. О настройке с использованием других операционных систем можно узнать в соответствующих руководствах из документации по Raspberry Pi.

Настройка Raspberry Pi

  • Сначала нужно скачать образ Raspbian. Это операционная система Raspberry Pi. Для скачивания подходит версия Lite. Здесь используется Mac OS X, но на сайте также доступны руководства для Windows и Linux.

1_ca6hiswb5kz5_wrsy3qzba3

  • Теперь нужно отформатировать карту micro SD. Для этого ее следует подключить к компьютеру. В моем случае это ноутбук с OS X. Сначала вставьте карту в картридер, как показано ниже. Затем подключите его к ноутбуку.

1_drrsdis-lwbsfatepoybmw4

Вставьте карту micro SD в картридер

1_8tkywjplj76lxwd7q_epow5

Вставьте картридер в ноутбук
  • На Mac для форматирования используется программа «Дисковая утилита» (Disk Utility). Откройте ее и найдите пустую карту micro SD под названием RASPBERRYPI, как показано ниже.

1_3laajr-jjlqnujmnwopzww6

«Дисковая утилита» на Mac
  • Затем нажмите кнопку «Стереть» (Erase) и выберете формат MS-DOS, как показано ниже. Далее, подтвердите выбор, нажав «Стереть».

1_ynhbk1mcdnh4t1nda2rgha7

Переформатирование карты micro SD
  • Теперь карта переформатирована. Пришло время загрузить на нее образ Raspbian. На всех ОС для загрузки образа на карту лучше всего использовать Etcher.
  • Разархивируйте файл Raspbian Lite, который скачали ранее. Для этого можно использовать популярные архиваторы: 7-Zip (Windows), Unarchiver (Mac) и Unzip (Linux).
  • В результате вы получите файл Raspbian с расширением .img, который будете загружать на карту micro SD.
  • Установите и запустите Etcher. Выберете распакованный образ, а затем карту micro SD, как показано ниже.

1_ttj2ntqwcfyzjkqryk6hyg8

Загрузка образа на карту micro SD с помощью Etcher
  • Далее, нажмите Flash!, чтобы загрузить образ.

1_rz1uf-aus2udqco8tuygfw9

Raspbian загружается на карту micro SD

Готово, вы загрузили образ Raspbian на карту micro SD!

Настройка подключения по SSH

Вы загрузили образ, и теперь нужно подготовить его для настройки беспроводной сети и подключения по SSH. На Mac я буду использовать командную строку для связи с Raspberry Pi и Vim — для любых изменений кода и имплементаций. Но вы можете использовать любую IDE, которая вам нравится.

  • Используйте терминал, чтобы найти директорию boot на карте micro SD. На Mac она находится здесь:

cd /Volumes/boot

Так вы попадете в директорию boot образа Raspbian. В ней нужно создать пустой файл с именем ssh. При первом запуске Raspbian на Raspberry Pi система будет искать файл с именем ssh в директории boot, чтобы установить подключение по SSH. Подробнее об этом можно узнать здесь.

Чтобы записать файл в эту директорию, выполните следующую команду:

touch ssh

Она создаст внутри директории boot пустой файл с именем ssh, который Raspbian будет использовать при запуске.

Установка Raspbian

Теперь перейдем к более интересной части и установим Raspbian на Raspberry Pi.

Безопасно извлеките карту micro SD из компьютера и вытащите ее из картридера. Вставьте карту в Raspberry Pi, как показано ниже.

1_tq3gzr24sryflyyv1dmweg10

Вставьте карту micro SD в Raspberry Pi

Подключите кабель Ethernet к Raspberry Pi, как показано ниже.

1_exv44ufxzetxywfpx2vwnw11

Подключите кабель Ethernet к Raspberry Pi

После этого подключите источник питания с помощью кабеля micro USB.

1_1nwhc6uyzv9siiygqmxxiw12

Подключение источника питания micro USB к Raspberry Pi

Светодиодный индикатор начнет мигать. Это значит, что устройство включено.

Пока идет установка, попробуем найти IP-адрес, который использует Raspberry Pi.

Подключение к Raspberry Pi

Чтобы узнать IP-адрес Raspberry Pi без монитора, необходимо войти в систему маршрутизатора по его IP-адресу.

В OS X сначала нужно нажать «Сеть» (Network) в «Системных настройках» (System Preferences), а затем «Дополнительно» (Advanced), как показано на рисунке ниже (сетевые имена и IP-адрес размыты).

1_hdaam9td0tzfphcvbtrgmg13

Теперь нажмите пункт TCP/IP, который покажет IPv4 и адрес маршрутизатора. Для доступа к маршрутизатору нам понадобится его адрес и, вероятно, имя пользователя и пароль. Обычно они указаны на наклейке самого маршрутизатора.

Введите IP-адрес в браузере, перейдите по нему и войдите в систему маршрутизатора. Здесь вы найдете список клиентов, подключенных к нему. Списки могут различаться в зависимости от типа маршрутизатора. Ниже показан мой список, и в нем есть устройство Raspberry Pi вместе с IP-адресом. Адрес локальный и в моем случае, вероятно, всегда будет начинаться с 192.168.X.Y. Помните об этом. Адрес понадобится для настройки подключения по SSH в вашей системе.

1_o2ybn74upsamn7ljvmctrq14

Мой адрес Raspberry Pi — 192.168.0.6. Исходное имя пользователя для Raspbian — pi, а исходный пароль — raspberry. Они нужны для входа в систему.

Чтобы подключиться к Raspberry Pi, выполните в терминале следующую команду:

$ ssh pi@IPADDRESS

IPADDRESS в моем случае — это 192.168.0.6. У вас будет свой адрес.

Когда система запросит пароль, введите raspberry. После этого соединение с Raspberry Pi по SSH должно быть установлено. Оболочка явно укажет на это:

pi@raspberrypi:~ $

Обратите внимание, что новое имя оболочки — pi@raspberrypi. Это означает, что вы успешно подключились к Raspberry Pi по SSH!

Теперь можно настроить Raspberry Pi, выполнив следующую команду:

sudo raspi-config

Она вызовет меню, в котором можно настроить параметры. Мы настроим беспроводную сеть, так как это Raspberry Pi 3 Model B. Учтите, что не все модели поддерживают беспроводную связь.

Сначала выберите «Параметры сети» (Network Options), а затем Wi-Fi. При первом запуске Raspbian OS спросит, в какой стране вы находитесь. Это необходимо для целей регулирования. После этого она запросит SSID, который служит именем вашей сети. Кодовая фраза — это пароль к вашей сети WI-FI. После этого беспроводное соединение должно быть готово к использованию. Подробнее о беспроводной связи можно узнать здесь.

Компиляция Parity для Raspberry Pi

1_bxaikl4vyodnbw5lhcul4w15

Логотип Docker

Чтобы выполнить этот шаг, мы локально скомпилируем файл на ноутбуке вместо того, чтобы использовать ресурсы на Raspberry Pi. Проще безопасно перенести скомпилированный двоичный файл Parity на Raspberry Pi.

Исходный код можно найти в этом репозитории Github, о котором мы и поговорим.

Dockerfile показан ниже.

FROM debian:latest

RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    ca-certificates \
    cmake \
    curl \
    git \
    pkg-config \
    gcc-arm-linux-gnueabihf \
    g++-arm-linux-gnueabihf \
    libc6-dev-armhf-cross \
    && rm -rf \
    /var/lib/apt/lists/*

RUN sed 's/^deb/deb-src/' /etc/apt/sources.list > \
        /etc/apt/sources.list.d/deb-src.list \
    && dpkg --add-architecture armhf \
    && apt-get update \
    && apt-get install -y \
        libssl-dev:armhf \
        libc6-dev:armhf \
    && rm -rf \
      /var/lib/apt/lists/*

ENV USER=root
RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --verbose
ENV PATH=/root/.cargo/bin:$PATH

ENV CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER=arm-linux-gnueabihf-gcc \
    CC_armv7_unknown_linux_gnueabihf="/usr/bin/arm-linux-gnueabihf-gcc" \
    CXX_armv7_unknown_linux_gnueabihf="/usr/bin/arm-linux-gnueabihf-g++" \
    CROSS_COMPILE="1" \
    OPENSSL_INCLUDE_DIR="/usr/include/arm-linux-gnueabihf" \
    OPENSSL_LIB_DIR="/usr/lib/arm-linux-gnueabihf"

RUN /root/.cargo/bin/rustup target add armv7-unknown-linux-gnueabihf
    
RUN dpkg --add-architecture armhf && \
    apt-get update && \
    apt-get install -y libudev-dev:armhf

RUN git clone https://github.com/paritytech/parity-ethereum.git && cd parity-ethereum && \
    cargo build --target=armv7-unknown-linux-gnueabihf --release

CMD ./parity-ethereum/target/armv7-unknown-linux-gnueabihf/release/parity

EXPOSE 8080 8545 8180
ENTRYPOINT ["/parity-ethereum/target/armv7-unknown-linux-gnueabihf/release/parity"]

В качестве среды ОС, необходимой для кросс-компиляции Parity, здесь используется Debian (лучшая из когда-либо созданных ОС). Если вы заметили, в файле прописаны строки для компиляции под целевые платформы armv7, заданные для Rust, gcc и g++. Если вы не понимаете содержимого файла, не беспокойтесь. Для кросс-компиляции это не нужно, так как Docker сделает все за вас, а вы просто получите двоичный файл. Я оставил его, скорее, для тех, кому интересно.

Сначала нужно установить Docker, который мы будем использовать для компиляции Parity. Мы не можем локально скомпилировать Parity без Docker, потому что нас интересует архитектура ARM (armv7) на Raspberry Pi, на которой будет работать Parity.

Например, двоичный файл, скомпилированный под архитектуру AMD, то есть X86, не будет работать на архитектуре ARM. Поэтому необходима кросс-компиляция. Раньше разработчики Parity выпускали двоичные файлы под архитектуру ARM при выходе новой версии. Но недавно они перестали ее поддерживать, поэтому я создал собственный файл Docker, показанный ранее.

После установки Docker на компьютер можно начинать.

Чтобы получить образ, запустите следующую команду:

$ git clone https://github.com/YazzyYaz/parity-arm.git
$ cd parity-arm

Теперь вы находитесь в директории parity-arm, которая содержит Dockerfile. Его мы скомпилируем для Parity.

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

$ docker build -t yazanator90:parity-arm .

Она создаст образ для Parity. Процесс сборки займет некоторое время, поэтому можно пока пообедать или позвонить любимому человеку.

Как только все будет готово, выполните следующие команды:

$ docker run -d —name parity-arm yazanator90:parity-arm

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

$ docker start parity-arm
$ docker ps
$ docker cp parity-arm:/parity-ethereum/target/armv7-unknown-linux-gnueabihf/release/parity parity-arm
$ docker stop parity-arm
$ docker rm parity-arm

Так вы удалите созданный образ, но в текущей директории останется скомпилированный двоичный файл с именем parity-arm. Чтобы проверить это, выполните следующую команду:

$ ls
parity-arm
Dockerfile
README.md
LICENSE

Теперь обратите внимание на созданный файл с именем parity-arm. Это двоичный файл, который нужно скопировать на Raspberry Pi.

Запуск Parity на Raspberry Pi

Теперь запустим Parity!

Сначала убедитесь, что вы подключены к Raspberry Pi по SSH. Об этом я писал ранее. Подключившись по SSH к терминалу, откройте новое окно, которое будете использовать для SCP (аббр. от Secure-Copy). SCP  — это протокол, который позволяет использовать SSH для защищенной передачи файлов между компьютерами.

Перейдите в директорию parity-arm, в которой находится скомпилированный двоичный файл, и запустите следующую команду, чтобы перенести Parity на Raspberry Pi с использованием SCP:

$ cd
$ scp -r parity-arm pi@IPADDRESS:~/

Так вы скопируете весь каталог в папку $HOME на Raspberry Pi, которая находится в ~ /.

Теперь перейдем к Raspberry Pi и запустим Parity.

В окне Raspberry Pi, к которому вы подключены по SSH, введите следующее:

$ cd ~/
$ ls
parity-arm/

Команда покажет директорию parity-arm, которую вы скопировали. Теперь запустим блокчейн Ethereum Classic с использованием Parity! Пришло время поддержать нашу неизменную сеть с помощью этого великолепного маленького устройства.

Перейдите в директорию parity-arm:

pi@raspberrypi:~ $ cd parity-arm/

Прежде чем запустить Parity, нужно узнать текущий IP-адрес. Это необходимо, чтобы указать Parity внешний IP-адрес, иначе он будет применять локальный адрес, выданный маршрутизатором. Локальный IP-адрес нельзя обнаружить за пределами домашней сети. Поэтому, чтобы Parity мог связываться через интернет с другими нодами, нужно предоставить IP-адрес нашей системы.

Его можно получить на этом сайте. Этот IP внутри следующей команды называется extip. Замените EXTIP в приведенной ниже команде на свой IP.

Чтобы создать экземпляр Parity для классической цепочки, используйте следующую команду:

pi@raspberrypi:~/parity-arm $ ./parity-arm —chain=classic —light —nat extip:EXTIP

Таким образом вы установите Parity для цепочки classic, то есть запустите ноду ETC. Учитывая, что мы работаем с Raspberry Pi, чтобы не занимать много места на карте, команда запускает легкий клиент. Команда —nat сообщает Parity, что его нода подключена к указанному EXTIP, который вы получили с сайта.

1_uozf4zeplzicx6kykcdj9a16

Запуск Parity на Raspberry Pi

Взгляните! Теперь у вас есть Parity на Raspberry Pi для ETC. Пришло время его синхронизировать. Оставьте устройство включенным и позвольте Parity сделать всю сложную работу. На этом все.

Источник



Рубрики:Новичкам, ETC, эфир

1 reply

Trackbacks

  1. инсайдерская история о противостоянии криптовалютных «старичков» и выходцев с Уолл-стрит — EthereumClassic - Stuff Aggregator

Добавить комментарий

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

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s