June 3, 2022

Celestia

О проекте

Стандартные блокчейны объединяют консенсус и исполнение, в то время как Celestia разделяет их. Celestia предоставляет подключаемый уровень консенсуса, позволяющий разработчикам развертывать свои собственные уровни выполнения для работы поверх них. Это обеспечивает большую настраиваемость и суверенитет для приложений, созданных на Celestia.

Данный проект использует двухмерную схему кодирования "reed-solomon" для кодирования блочных данных, таким образом достигается следующее: только небольшой выборки данных достаточно для статистической достоверности того, что весь блок был опубликован. Если данные закодированы неправильно, сеть уведомляется через доказательство мошенничества с доступностью данных.

Сам проект выглядит довольно перспективно. К тому же, когда имеем очередное затишье в сфере нод, почему бы и не поставить, когда можно ставить?

Спонсоры

Всего в проект инвестировано свыше 1.5млн долларов, среди инвесторов часть - ноунеймы, но есть и довольно интересные, например:

Maven 11 capital - крупный инвестор, основное направление - DeFi, помощь проектам на раннем этапе, из их портфолио вам могут быть знакомы 1INCH, Anoma, Chainflip, Nym.

Cryptium labs
Divergence Ventures - 1INCH, Moonbeam, Obol
Binance labs

Примерный список:

Mamaki testnet

# Обновление пакетов и зависимостей
sudo apt update && sudo apt upgrade -y
sudo apt install curl tar wget clang pkg-config libssl-dev jq build-essential bsdmainutils git make ncdu -y

# Установка GO (1.17.2)
cd $HOME
ver="1.17.2"
wget "<https://golang.org/dl/go$ver.linux-amd64.tar.gz>"
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf "go$ver.linux-amd64.tar.gz"
rm "go$ver.linux-amd64.tar.gz"
echo "export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin" >> $HOME/.bash_profile
source $HOME/.bash_profile
go version

# Вывод дожен быть следующий: 
# go version go1.17.2 linux/amd64

cd $HOME
git clone <https://github.com/celestiaorg/celestia-app>
cd celestia-app
git fetch
git checkout v0.5.0
make install

cd $HOME

# Устанавливаем переменные(все, кроме CELESTIA_CHAIN)
CELESTIA_CHAIN="mamaki"
CELESTIA_NODENAME="YOUR_NODENAME"
CELESTIA_WALLET="CELESTIA_WALLET"

echo "
export CELESTIA_CHAIN=${CELESTIA_CHAIN}
export CELESTIA_NODENAME=${CELESTIA_NODENAME}
export CELESTIA_WALLET=${CELESTIA_WALLET}
" >> $HOME/.bash_profile && source $HOME/.bash_profile

# инициация
celestia-appd init $CELESTIA_NODENAME --chain-id $CELESTIA_CHAIN

celestia-appd config chain-id $CELESTIA_CHAIN
celestia-appd config keyring-backend test

# установка генезиса
wget -O $HOME/.celestia-app/config/genesis.json "<https://github.com/celestiaorg/networks/raw/master/mamaki/genesis.json>"

peers=$(curl -sL <https://raw.githubusercontent.com/celestiaorg/networks/master/mamaki/peers.txt> | tr -d '\\n' | head -c -1) && echo $peers
sed -i.bak -e "s/^persistent-peers *=.*/persistent-peers = \\"$peers\\"/" $HOME/.celestia-app/config/config.toml
sed -i.bak -e "s/^timeout-commit *=.*/timeout-commit = \\"25s\\"/" $HOME/.celestia-app/config/config.toml
sed -i.bak -e "s/^skip-timeout-commit *=.*/skip-timeout-commit = false/" $HOME/.celestia-app/config/config.toml


sed -i.bak -e "s/^mode *=.*/mode = \\"validator\\"/" $HOME/.celestia-app/config/config.toml
sed -i.bak -e "s/^use-legacy *=.*/use-legacy = \\"true\\"/" $HOME/.celestia-app/config/config.toml

# генерируем ключи
celestia-appd keys add $CELESTIA_WALLET --keyring-backend test

# ОБЯЗАТЕЛЬНО СОХРАНЯЕМ МНЕМОНИКУ, КОТОРАЯ ПРИХОДИТ НА ВЫВОД!!!

# создаем сервис
tee $HOME/celestia-appd.service > /dev/null <<EOF
[Unit]
  Description=CELESTIA MAMAKI
  After=network-online.target
[Service]
  User=$USER
  ExecStart=$(which celestia-appd) start
  Restart=on-failure
  RestartSec=10
  LimitNOFILE=65535
[Install]
  WantedBy=multi-user.target
EOF

sudo mv $HOME/celestia-appd.service /etc/systemd/system/

sudo systemctl enable celestia-appd
sudo systemctl daemon-reload
sudo systemctl restart celestia-appd && journalctl -u celestia-appd -f -o cat


# проверяем синк, если в поле "catching_up" значение false, все хорошо
# если нет - ждем синхронизации, должно стать false, после идем дальше по пунктам
curl localhost:26657/status

# Пример адекватного вывода
"sync_info": {
      "latest_block_hash": "DECF3960623E4E42D3F3C6DE25CEC60F8BC0A4067350F3FD37140440AB2BC406",
      "latest_app_hash": "599EB67FFA303FE5DC71E7F6CB0726C7F670582D989B9C00CD1FC5316F1A07D6",
      "latest_block_height": "6049",
      "latest_block_time": "2022-05-25T18:50:07.026333875Z",
      "earliest_block_hash": "41BBFD05779719E826C4D68C4CCBBC84B2B761EB52BC04CFDE0FF8603C9AA3CA",
      "earliest_app_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855",
      "earliest_block_height": "1",
      "earliest_block_time": "2022-05-24T13:02:31.713132226Z",
      "max_peer_block_height": "5957",
      "catching_up": false,
      "total_synced_time": "0",
      "remaining_time": "0",
      "total_snapshots": "0",
      "chunk_process_avg_time": "0",
      "snapshot_height": "0",
      "snapshot_chunks_count": "0",
      "snapshot_chunks_total": "0",
      "backfilled_blocks": "0",
      "backfill_blocks_total": "0"
}

# создаем валидатора, на данном этапе переходим 
# в дискорд проекта и просим токены с фаусета (вкладка faucet)
celestia-appd tx staking create-validator \\
 --amount=10000000utia \\
 --pubkey=$(celestia-appd tendermint show-validator) \\
 --moniker=$CELESTIA_NODENAME \\
~~~~ --chain-id=$CELESTIA_CHAIN \\
 --commission-rate=0.1 \\
 --commission-max-rate=0.2 \\
 --commission-max-change-rate=0.01 \\
 --min-self-delegation="1" \\
 --from=$CELESTIA_WALLET

# проверка валидатора
celestia-appd q staking validator <VALOPER_ADDR>

# Бэкапим "$HOME/.celestia-app/config/priv_validator_key.json" to your PC!**