COSMOS
April 6, 2023

Nibiru Incentivized Testnet 2

🪓 Telegram канал UTSA 🪓 Telegram чат UTSA

Web Discord Github

Подробную информацию о Nibiru Incentivized Testnet 2 можно прочитать здесь - https://nibiru.fi/blog/posts/010-itn-2-cosmwasm-governance.html
Если Вы ранее не регистрировались для первой фазы, то зарегистрируйтесь сейчас https://gleam.io/yW6Ho/nibiru-incentivized-testnet-registration
Данный гайд не получился без замечательного гайда от craving-for-knowledge, которому выражаю большую благодарность https://craving-for-knowledge.gitbook.io/craving_for_knowledge/testnets/nibiru/nibiru-incentivized-testnet-2

Governance Tasks (+300)

В официальном гайде присутствуют следующие задачи:

  • Participate in at least 1 governance proposal
  • Participate in 4 or more governance proposals

Также в анонсе в дискорде было следующее объявление:

  • Governance: Submitting, voting, and passing proposals
  • Smart Contracts: Developing and deploying secure, high-quality contracts.

Из чего я делаю вывод что необходимо создать минимум 1 proposal и проголосовать за минимум 4 чужих proposals

UPD - позже получил ответ от команды, что достаточно голосования. Создавать proposal не нужно!!!


Я предлагаю сделать обычный текстовый proposal, который не влияет на блокчейн, а является просто информационным. Для создания нам будет необходима установленная нода, с которой будет отправлена транзакция. Также можно использовать чужую RPC для транзакции - в этом случае нет необходимости иметь собственную синхронизированную ноду

# создать proposal
nibid tx gov submit-proposal --title="Randomly reward" --description="Reward 10 testnet participants who completed more than 3 tasks" --type="Text" --deposit="10000000unibi" --from=<name_wallet> --fees 5000unibi
# проголосовать за proposal
nibid tx gov vote 1 yes --from <name_wallet> --fees 5000unibi

Более подробную информацию о Governance Вы можете прочитать здесь - https://teletype.in/@lesnik13utsa/ZsT9B6y2k_8

Smart Contract Tasks (+300)

В официальном гайде присутствуют следующие задачи:

  • Deploy a smart contract on Nibiru
  • Instantiate a smart contract on Nibiru
  • Successfully broadcast an ExecuteContract transaction

Deploy a smart contract

Для выполнения данной задачи я взял отдельный сервер с обычными параметрами для Cosmos

# обновляем репозитории
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

Устанавливаем бинарный файл

curl -s https://get.nibiru.fi/! | bash
nibid version --long | grep -e version -e commit
# v0.19.2
# commit: 2cf3ede4c61f68a32b9cf585563f4fce19c79334

Настраиваем конфигурацию

Проверьте работает ли RPC. Вы можете использовать RPC из данного списка:
http://144.76.97.251:40657
http://65.108.233.102:27657
http://182.42.82.11:26657
http://65.21.197.233:46657
http://195.201.61.112:26657
http://146.158.65.215:26657
http://116.202.114.46:26657
http://135.181.116.223:36657
http://65.109.65.210:33657
http://95.217.35.186:46657
http://146.158.65.215:26657
http://121.11.105.171:26657
http://213.136.84.176:11657
http://148.251.87.24:26657
http://164.90.228.2:12657
http://157.90.4.172:36657
http://65.108.108.52:11657
http://94.130.132.22:36657
http://95.217.105.224:36657
http://78.46.99.59:36657
http://144.91.78.94:56657
http://94.130.131.217:36657
http://149.102.136.149:26657
http://135.181.222.190:36657
nibid config node https://rpc.itn-1.nibiru.fi:443
nibid config chain-id nibiru-itn-1
nibid config broadcast-mode block
nibid config keyring-backend os

Теперь восстанавливаем наш кошелек, который ранее был зарегистрирован в Gleam. На кошельке должны быть монеты

# восстановить кошелек (после команды вставить seed)
nibid keys add wallet --recover --keyring-backend os

Скачиваем wasm

mkdir -p $HOME/wasm && cd $HOME/wasm
wget https://github.com/NibiruChain/cw-nibiru/raw/main/artifacts-cw-plus/cw20_base.wasm

Загружаем wasm в сеть

nibid tx wasm store $HOME/wasm/cw20_base.wasm --from wallet --gas 8000000 --fees 200000unibi
Мы видим следующее и соглашаемся Y

Записываем свои значения code_id и txhash. В нашем примере это:

сode_id 787

txhash 4FF2EA71F74531295F269E3962AE07840994A9B9074625B1A1B08A624C6C3A9D

Теперь мы можем узнать наш code_id через txhash

nibid q tx 4FF2EA71F74531295F269E3962AE07840994A9B9074625B1A1B08A624C6C3A9D | grep raw_log

И проверить

nibid query wasm code-info 787

Instantiate a smart contract

Теперь мы создадим экземпляр нашего контракта и создадим определенное количество cw20 токенов, которые в следующем разделе отправим на другой адрес

Зададим переменные. Замените name, symbol, address, minter на свои значения!

init='{"name":"UTSA_test","symbol":"UTSA","decimals":6,"initial_balances":[{"address":"nibi1m2mm7kzvw6m3464h94ryqg8xvr6tyeyywa9c6n","amount":"13000000"}],"mint":{"minter":"nibi1m2mm7kzvw6m3464h94ryqg8xvr6tyeyywa9c6n"},"marketing":{}}'

Отправим транзакцию. Замените 787 на свое значение сode_id

nibid tx wasm instantiate 787 $init --label "UTSA cw20_base" --no-admin --from wallet --gas 8000000 --fees 200000unibi -y

Записываем свои значения contract_address и txhash. В нашем примере это:

contract_addressnibi173uce9fau3rx5q66rjau2rn344ep8ljc5nw7zjnvj6lnw2x83vqqchn8jp

txhashAF2A475F583EBEA49BB122B87ED01243A624125EC5DAD7C952DFDB8F5CDFC3CD

Successfully broadcast an ExecuteContract transaction

Теперь мы можем попробовать отправить наши токены cw20 на другой кошелек. Но сначала проверим наш баланс. Замените contract и address на свои значения

contract=nibi173uce9fau3rx5q66rjau2rn344ep8ljc5nw7zjnvj6lnw2x83vqqchn8jp
balance='{"balance": {"address": "nibi1m2mm7kzvw6m3464h94ryqg8xvr6tyeyywa9c6n"}}'
nibid query wasm contract-state smart $contract "$balance" --output json
# {"data":{"balance":"13000000"}}

Задаем переменную для нового кошелька, куда мы намереваемся отправить токены. Замените recipient на свое значение

transfer='{"transfer":{"recipient":"nibi15xa3kcsq8mnvv6lqsgtaa7kmhl6938lmrthufw","amount":"130"}}'
nibid tx wasm execute $contract $transfer --from wallet --gas 8000000 --fees 200000unibi -y

Записываем значение txhash. В нашем примере это:

txhash 96BCB8A9AC3AB1EBFF0B5485482F176B66D7BDC1645DFC9F1F40F12C76956FF9

Теперь можем снова проверить баланс и убедиться, что баланс уменьшился

nibid query wasm contract-state smart $contract "$balance" --output json
# {"data":{"balance":"12999870"}}


Поддержим природу вместе: 0xa7476EC14cD663C742d527113638C77a1631Cc89 cosmos1m2mm7kzvw6m3464h94ryqg8xvr6tyeyyecppnq