Установка TON Labs SDK

tonlabs sdk ton

avatar arkadiy 1 month ago

Установка TON Labs SDK

Установку TON Labs SDK можно условно разбить на две части. В первой, подготовительной части, мы установим Docker и Node.js, во второй - node-cli и docker-контейнеры, которые составляют основу TON Labs SDK.

Подготовительная часть

Установка Docker на Ubuntu 18.04

  1. Обновим список доступных пакетов

    $ sudo apt-get update
  2. Дадим возможность пакетному менеджеру использовать репозитории по https
    $ sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common
  3. Добавим GPG key для репозитория Docker
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  4. Убедимся, что ключ имеет правильный fingerprint 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88, выполнив поиск по последним 8 символам
    $ sudo apt-key fingerprint 0EBFCD88
    pub   rsa4096 2017-02-22 [SCEA]
             9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
    uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
    sub   rsa4096 2017-02-22 [S]
  5. Добавим stable репозиторий

    $ sudo add-apt-repository \
       "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
       $(lsb_release -cs) \
       stable"
  6. Снова обновим список доступных пакетов
    $ sudo apt-get update
  7. Установим последнюю версию Docker Engine и containerd
    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
  8. Убедимся, что Docker установлен корректно и работает, запустив hello-world
    $ sudo docker run hello-world

    Эта команда загружает тестовый docker-образ и запускает его как контейнер. После запуска контейнер выводит информационное сообщение и завершает свою работу.

Запуск Docker из под обычного пользователя

Docker использует не TCP-порт, а Unix-сокет. По умолчанию сокеты доступны только пользователю root, а остальные пользователи могут получить к ним доступ с помощью sudo. Именно поэтому Docker выполняется от имени root. При таком раскладе нам нужно будет каждое обращение к Docker’у предварять sudo, что не очень удобно. Такое положение дел можно исправить, создав пользовательскую группу с названием docker и добавив в нее нашего пользователя. При каждом запуске Docker создает Unix-сокет, доступный пользователям группы docker.

  1. Создадим пользовательскую группу docker
    $ sudo groupadd docker

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

  2. Добавим нашего пользователя в группу docker
    $ sudo usermod -aG docker $USER
  3. Перелогинимся для того, чтобы изменения вступили в силу. Сигналом об успехе станет возможность запустить контейнер hello-world без использования sudo.

    $ docker run hello-world

Установка Node.js

На момент написания статьи в стандартных репозиториях Ubuntu доступна node.js 8-й версии. Нам же для работы требуется node.js не ниже 10-й, поэтому воспользуемся репозиторием NodeSource, который предоставляет бинарники в виде .rpm, .deb и snap пакетов. Замечу, что мы устанавливаем node.js v.10.x, ибо LTS.

$ curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
$ sudo apt-get install -y nodejs

Основная часть

Установка TON Labs SDK

TON Labs SDK состоит из трех основных компонентов:

  • TON Labs Compiler Kit - docker-контейнер с набором инструментов для преобразования solidity-кода в TVM-байткод и создания BOC сообщений, готовых к отправке в тестовую сеть.
  • TON Labs Local Node - docker-контейнер, в котором крутится локальный тестовый узел.
  • TON Labs Client Libraries - клиентские библиотеки, с помощью которых можно обращаться к тестовому узлу TON Labs Local Node.

Также, ребята из TON Labs написали для нас node-cli, который позволяет быстро и непринужденно установить и запустить все необходимые docker-образы.

  1. Установим node-cli
    $ sudo npm install -g ton-dev-cli
  2. Выполним установку и запуск docker-контейнеров с помощью node-cli

    $ tondev start
  3. Убедимся, что все ок
    $ tondev info