Cosmos — это проект, создающий «Интернет блокчейнов», которые будут связаны друг с другом через протокол IBC. В отличие от многих блокчейнов, где ваше приложение должно будет платить сборы каким-то странным парням с комнатами, полными графических процессоров, в Cosmos вы строите свою собственную цепочку, и большая часть комиссий за транзакции может идти держателям токенов вашего блокчейна, а валидаторы взимают 0–10%. транзакционных сборов за эксплуатацию инфраструктуры.
Создание собственного блокчейна также дает вам большую гибкость. Если Биткойн — это карманный калькулятор с несколькими функциями, а Эфириум — графический калькулятор с возможностью загрузки некоторых ограниченных скриптов, то Cosmos — это Ruby on Rails. Вы начинаете с полнофункционального базового приложения, созданного из надежного набора библиотек, и настраиваете в нем все и вся.
Базовое приложение, с которого вы начинаете, называется gaia . Это то же программное обеспечение, на котором работает сеть Cosmos Hub. В этом сообщении блога приведены инструкции по запуску цепочки с двумя валидаторами, хотя было бы легко адаптировать эти инструкции к большей группе валидаторов.
Установить
Сначала установите все. Эти шаги одинаковы, если вы инициализируете новую цепочку Cosmos или присоединяетесь к чьей-то еще. Они работают на новых дроплетах DigitalOcean Ubuntu, но, вероятно, будут работать и на многих других системах Linux, хотя вам, возможно, придется установить другие зависимости, такие как Git.
Загрузите и установите Golang (с https://golang.org/doc/install )
wget https://dl.google.com/go/go1.12.5.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.12.5.linux-amd64.tar.gz
export PATH=$PATH: /usr/местные/перейти/бен
Настройте некоторые необходимые переменные среды Golang (из https://github.com/cosmos/gaia/blob/master/docs/installation.md )
mkdir -p $HOME/go/bin
echo "export GOPATH=$HOME/go" >> ~/.bash_profile
echo "export PATH=\$PATH:\$GOPATH/bin" >> ~/.bash_profile
source ~/. bash_profile
Получить некоторые инструменты сборки, используемые для сборки двоичных файлов
apt install make
apt install gcc
Загрузите gaia, кодовую базу Cosmos Hub
mkdir -p $GOPATH/src/github.com/cosmos
cd $GOPATH/src/github.com/cosmos
git clone https://github.com/cosmos/gaia
Создайте двоичные файлы
cd gaia && сделать установку
Убедитесь, что он был установлен правильно
версия gaiad --long
версия gaiacli --long
gaiacli
например, должен вывести что-то похожее на:
space-sdk: 0.33.0
git commit: 7b4104aced52aa5b59a96c28b5ebeea7877fc4f0
теги сборки: netgo ledger
go version go1.12 linux/amd64
Инициализация новой цепочки Cosmos
Теперь пришло время настроить начальные условия для вашей сети с помощью файла с именем genesis.json
. Это очень важно для доказательства цепочки ставок, поскольку все остальное, что произойдет в течение жизни цепочки, будет исходить из полномочий и ценности, предоставленных здесь. Например, в Cosmos Hub genesis.json
файл содержал количество атомов, купленных участниками краудсейла.
Процесс запуска сети Cosmos состоит из нескольких шагов, но каждый шаг важен. Участники системы блокчейна доверяют процессу, а не друг другу, и каждый шаг этого процесса позволяет им убедиться, что все кошерно.
- Кто-то создает
genesis.json
файл с начальным распределением токенов и отправляет его всем стартовым валидаторам для проверки. - Если валидаторы считают, что
genesis.json
файл действителен, они подписываютgentx
s, чтобы быть добавленными в качестве валидаторов в цепочку. - Кто-то компилирует все
gentx
s и добавляет их вgenesis.json
, снова рассылая всем валидаторам для проверки. - Если валидаторы считают, что код
genesis.json
все еще действителен, они запускают свои узлы и начинают производить блоки.
Мы будем использовать приведенные здесь инструкции для «одноузловой, локальной, ручной тестовой сети», но мы изменим их для создания многоузловой, удаленной, ручной сети. Это предполагает, что у вас есть два сервера, настроенных в соответствии с приведенными выше инструкциями. Если вы настроили только один, настройте еще один прямо сейчас.
Шаг 1.
Следуйте этим инструкциям для валидатора 1:
# Эти команды выполняются на валидаторе 1# Вы можете запустить все эти команды из своего домашнего каталога cd $HOME# Инициализируйте файл genesis.json, который поможет вам загрузить сеть gaiad init --chain-id=mychain validator1# Создайте ключ для хранения вашей учетной записи валидатора gaiacli keys add validator1# Добавьте этот ключ в массив genesis.app_state.accounts в файле генезиса # ПРИМЕЧАНИЕ: эта команда позволяет вам установить количество монет. Убедитесь, что на этом аккаунте есть монеты # с номиналом genesis.app_state.staking.params.bond_denom, по умолчанию используется gaiad add-genesis-account $(gaiacli keys show validator -a) 1000000000stake,1000000000footoken
Теперь переключитесь на валидатор 2.
# Эти команды выполняются на валидаторе 2# Создайте ключ для хранения вашей учетной записи валидатора gaiacli keys add validator2# Показать адрес gaiacli keys show validator2 -a
Скопируйте вывод ключа второй командой и переключитесь обратно на валидатор 1:
# Эти команды выполняются на валидаторе 1# Добавить адрес и распределение валидатора2 в genesis.json gaiad add-genesis-account <адрес скопирован из валидатора2> 1000000000stake,1000000000footoken# Экспорт genesis.json gaiad export
Скопируйте вывод genesis.json второй командой и переключитесь обратно на валидатор 2:
# Эти команды выполняются на валидаторе 2# Сохраните genesis.json из последнего шага в: $HOME/.gaiad/config/genesis.json
Шаг 2.
Теперь пришло время сделать gentx
s
# Эти команды выполняются на валидаторе 2gaiad gentx --name validator2# Это должно вывести примерно следующее :# Скопируйте gentx из файла, в котором он был сохранен
Шаг 3.
Вернуться к валидатору 1
# Эти команды выполняются на валидаторе 1# Сохраните gentx из validator2 в: # /root/.gaiad/config/gentx/<имя gentx-файла из validator2>.json# Теперь создайте файл gentx для validator1 gaiad gentx --name jehan# Теперь сгенерируйте окончательный файл genesis.json gaiad collect-gentxs
Вернитесь к валидатору 2 и снова сохраните файл genesis.json, созданный валидатором 1.
# Эти команды выполняются на валидаторе 2# Сохраните genesis.json из последнего шага в: $HOME/.gaiad/config/genesis.json
Шаг 4.
Теперь работа gaiad start
на обоих узлах должна запустить ваш блокчейн. Возможно, вам придется сначала начать один или другой. Вы, вероятно, захотите использовать что-то вроде systemd , чтобы валидаторы работали при перезапуске системы, но это выходит за рамки этой статьи.
В следующем посте мы поговорим о том, как отправить монеты на другой аккаунт и как их добавить в набор валидаторов.