April 13, 2023

Nibiru

ITN2

Я предлагаю сделать обычный текстовый 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

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 из данного списка:
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://nibiru-testnet.nodejumper.io:443
nibid config chain-id nibiru-itn-1
nibid config broadcast-mode block
nibid config keyring-backend os

восстановить кошелек

nibid keys add wallet --recover

Скачиваем 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":"name_coin","symbol":"NCN","decimals":6,"initial_balances":[{"address":"nibi1m2mm7kzvw6m3464h94ryqg8xvr6tyeyywa9c6n","amount":"13000000"}],"mint":{"minter":"nibi1m2mm7kzvw6m3464h94ryqg8xvr6tyeyywa9c6n"},"marketing":{}}'

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

nibid tx wasm instantiate 787 $init --label "NCN 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"}}