Canton Network
🪓 Telegram канал UTSA 🪓 Telegram чат UTSA
- Networks:
devnet; mainnet
- Working directory:
.canton
- Explorer: https://lighthouse.devnet.cantonloop.com/
- Интерфейс WALLET: http://wallet.localhost/
- Интерфейс CNS: http://ans.localhost/
- Docs: https://sync.global/docs/
- WhitePaper: https://www.canton.network/whitepaper
Canton Network
Canton Network — это первая в мире блокчейн-сеть с поддержкой конфиденциальности и полной межоперабельностью, ориентированная на реальные, регулируемые активы
Её цель - создать безопасную инфраструктуру, где финансовые организации могут взаимодействовать напрямую, не теряя контроля над данными и соблюдая требования регуляторов
В основе экосистемы лежит Global Synchronizer - децентрализованный сервис, который обеспечивает синхронизацию и связь между независимыми блокчейнами внутри Canton Network. Он использует BFT-консенсус и управляется открытым сообществом независимых организаций, называемых Super Validators. Эти участники отвечают за надёжность, безопасность и порядок транзакций в сети
🧩 Валидаторы: основа работы сети
Помимо супер-валидаторов, важнейшую роль играют простые валидаторы — именно им и посвящён этот гайд
Validators - это участники, которые работают внутри Canton Network, проверяя транзакции, ведя учёт активности и обеспечивая связь между пользователями и приложениями
Каждый валидатор хранит только те данные, которые ему необходимы, и взаимодействует с другими узлами через синхронизаторы, что делает сеть масштабируемой и безопасной
- Проверять транзакции и подтверждать их корректность;
- Записывать активность и обеспечивать целостность данных;
- Поддерживать стабильное соединение между пользователями и приложениями;
- Участвовать в обновлениях и миграциях сети
Активность и стабильность узла напрямую влияют на вознаграждение валидатора. Сеть поощряет тех, кто работает надёжно и постоянно обрабатывает трафик - через механизм minting rewards и liveness incentives
Нативный токен Canton Coin используется для стимулирования участников сети. Он обеспечивает баланс между использованием и эмиссией - токены сжигаются при оплате комиссий и создаются вновь как вознаграждение активным валидаторам
Таким образом, чем активнее используется сеть, тем устойчивее становится экономика Canton Network.
⚡ Сеть Canton создаёт фундамент для децентрализованной, но регулируемой финансовой инфраструктуры нового поколения
Здесь роль валидаторов особенно значима - именно они обеспечивают надёжность и живучесть экосистемы, формируя её устойчивость и доверие
Проект уже получил косвенные инвестиции около $400 млн от топовых (Tier 1) фондов - источник
Данный гайд описывает общие условия и принципы установки ноды Canton Network
- Перед запуском обязательно ознакомьтесь с официальной документацией от команды проекта, только она содержит актуальные технические требования и инструкции по настройке
- Настоятельно рекомендуется обеспечить безопасность своего кошелька и приватных ключей, особенно при запуске через docker-compose, так как развертывание по умолчанию крайне небезопасно - https://docs.dev.sync.global/validator_operator/validator_compose.html#compose-validator-auth
- Обязательно делайте резервные копии базы данных - https://docs.dev.sync.global/validator_operator/validator_backups.html#backup-of-node-identities
Подача заявки на валидатора
Воспользуйтесь формой ниже, если Вы хотите настроить свою собственную ноду в качестве оператора, заявка будет отправлена в Комитет по токеномике для рассмотрения. Процесс занимает примерно 2 недели
🔗 https://sync.global/validator-request/
Для подачи заявки нельзя использовать бесплатную почту - воспользуйтесь собственной почтой на собственном домене
Более подробно с процессом развертывания валидатора Вы можете ознакомиться в данной статье - https://docs.dev.sync.global/validator_operator/validator_onboarding.html
Подготовка сервера
# обновляем репозитории apt update && apt upgrade -y # устанавливаем необходимые утилиты apt install curl iptables build-essential git wget jq make gcc nano tmux htop nvme-cli pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev -y
File2Ban - подробнее здесь и здесь
# устанавливаем и копируем конфиг, который будет иметь больший приоритет apt install fail2ban -y && \ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && \ nano /etc/fail2ban/jail.local # раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 <ip> systemctl restart fail2ban # проверяем status systemctl status fail2ban # проверяем, какие jails активны (по умолчанию только sshd) fail2ban-client status # проверяем статистику по sshd fail2ban-client status sshd # смотрим логи tail /var/log/fail2ban.log # останавливаем работу и удаляем с автозагрузки #systemctl stop fail2ban && systemctl disable fail2ban
Устанавливаем docker + docker-compose
# https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ru apt update && \ apt install apt-transport-https ca-certificates curl software-properties-common -y && \ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - && \ add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && \ apt update && \ apt-cache policy docker-ce && \ sudo apt install docker-ce -y && \ docker --version
# ручная установка docker-compose https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04-ru # проверяем версию https://github.com/docker/compose/releases и подставляем в команду установки curl -L "https://github.com/docker/compose/releases/download/v2.10.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose # проверить версию docker-compose --version
Новая установка ноды
Важно: развертывание по умолчанию через docker-compose крайне небезопасно, поэтому позаботьтесь о том, чтобы только Вы могли заходить на свой кошелек http://wallet.localhost/
В случае если Вы оставите порты открытыми, то любой сможет зайти на Ваш кошелек зная Ваш IP адрес. Пожалуйста создаете токен auth или закройте порты в docker!!!
Создаем необходимые каталоги. Для каждой новой версии мы будем использовать новый каталог
mkdir -p ~/.canton mkdir -p ~/.canton/0.4.19 cd ~/.canton/0.4.19
Скачиваем архив с docker-compose
wget https://github.com/digital-asset/decentralized-canton-sync/releases/download/v0.4.19/0.4.19_splice-node.tar.gz tar xzvf 0.4.19_splice-node.tar.gz cd ~/.canton/0.4.19/splice-node/docker-compose/validator
Явно указываем версию для правильной сборки
export IMAGE_TAG=0.4.19
Для запуска ноды нам необходимо получить токен доступа. Для Devnet мы можем получить его самостоятельно, для Testnet и Mainnet нам необходимо получить его у спонсора
Получаем токен для DEVNET (действует 1 час)
# при первом включении используем его - при дальнейших запусках удаляем токен и оставляем -o ""
curl -X POST https://sv.sv-1.dev.global.canton.network.sync.global/api/sv/v0/devnet/onboard/validator/prepare
./start.sh -s "<SPONSOR_SV_URL>" -o "<ONBOARDING_SECRET>" -p "<party_hint>" -m "<MIGRATION_ID>" -w
- <SPONSOR_SV_URL> = https://sv.sv-1.dev.global.canton.network.sync.global
- <ONBOARDING_SECRET> = Ваш токен для Devnet
- <party_hint>= Ваше название валидатора (пример: Val-validator-1)
- <MIGRATION_ID>=0 для Devnet (смотрим здесь - https://sync.global/sv-network/)
После успешного запуска Вы можете проверить логи
cd /root/.canton/0.4.19/splice-node/docker-compose/validator docker compose logs -f validator
Обратите внимание, что валидатор можно остановить с помощью команды ./stop.sh
и перезапустить с помощью той же команды start.sh
, как указано выше. При последующих вызовах токен можно не указывать и оставить поле пустым, но флаг -o
по-прежнему обязателен, поэтому необходимо указать аргумент -o ""
Полезные команды
cd ~/.canton/0.4.19/splice-node/docker-compose/validator docker compose logs -f validator
cd ~/.canton/0.4.19/splice-node/docker-compose/validator ./stop.sh
cd ~/.canton/0.4.19/splice-node/docker-compose/validator ./start.sh -s "https://sv.sv-1.dev.global.canton.network.sync.global" -o "" -p "
Проверить приняли ли IP супервалидаторы для Devnet
(set -o pipefail CURL='curl -fsS -m 5 --connect-timeout 5' for url in $($CURL https://scan.sv-1.dev.global.canton.network.sync.global/api/scan/v0/scans | jq -r '.scans[].scans[].publicUrl'); do echo -n "$url: " $CURL "$url"/api/scan/version | jq -r '.version' done)
Проверить приняли ли IP супервалидаторы для Mainnet
(set -o pipefail CURL='curl -fsS -m 5 --connect-timeout 5' for url in $($CURL https://scan.sv-1.global.canton.network.sync.global/api/scan/v0/scans | jq -r '.scans[].scans[].publicUrl'); do echo -n "$url: " $CURL "$url"/api/scan/version | jq -r '.version' done)
Пример обновления. Перед обновлением обязательно делайте резервные копии
# останавливаем ноду cd ~/.canton/0.4.18/splice-node/docker-compose/validator ./stop.sh # создаем отдельный каталог mkdir -p ~/.canton/0.4.19 cd ~/.canton/0.4.19 # скачиваем архив wget https://github.com/digital-asset/decentralized-canton-sync/releases/download/v0.4.19/0.4.19_splice-node.tar.gz tar xzvf 0.4.19_splice-node.tar.gz cd ~/.canton/0.4.19/splice-node/docker-compose/validator #экпортируем версию!!! export IMAGE_TAG=0.4.19 # запускаем - -o "" оставляем пустыми (без токена), так как он вводится только 1 раз # ./start.sh -s "<SPONSOR_SV_URL>" -o "<ONBOARDING_SECRET>" -p "<party_hint>" -m "<MIGRATION_ID>" -w # посмотреть логи cd ~/.canton/0.4.19/splice-node/docker-compose/validator docker compose logs -f validator