GNO.LAND
Что такое GnoLand?
Платформы смарт-контрактов представляют собой децентрализованные виртуальные машины, управляемые недоверенными узлами, которые подтверждают транзакции или запускают приложения с открытым исходным кодом, называемые смарт-контрактами, на основе экономических стимулов. Хотя ведущие блокчейны позволили развернуть несколько тысяч приложений, обслуживающих миллионы пользователей, среда разработки и пользовательский опыт еще не оптимизированы.
В Gnoland принят новый язык Gnolang, являющийся форком Golang. Очевидное преимущество Golang по сравнению с другими языками проявляется при работе с параллелизмом. В то время как большинство языков программирования, таких как C++ или Java, используют многопоточность для выполнения параллельных программ, Go использует Goroutines.
Многопоточность — это когда несколько потоков выполняются параллельно в рамках одного процесса. Это может быть ваш браузер, одновременно воспроизводящий музыку и запускающий поисковую систему, или программа для обработки текстов, отображающая введенный вами текст и одновременно проверяющая грамматику. Проблема многопоточности заключается в том, что она требует переключения контекста, когда планировщик ОС управляет переключением между процессами и потоками. Это часто вызывает накладные расходы и потребляет чрезмерное количество ресурсов. Goroutine, с другой стороны, снимает бремя с ОС, реализуя Go Scheduler, нативный планировщик во время выполнения. Создание и уничтожение Goroutines потребляет значительно меньше памяти (всего 0,2% потоков) и полностью использует все ядра аппаратного обеспечения.
Gnoland предлагает наиболее жизнеспособное решение этой проблемы — интеграцию goroutines, поддерживая Golang в качестве языка смарт-контрактов.
Простыми словами — Goland это новый слегка доработанный язык программирования Go, который называется Gnolang. Сложнее или легче языка Go, скажут нам уже программисты, которые будут с ним работать.
Что мы тут забыли?
В этой статье раcсмотрим, как установить ноду и выполнить задание, которое возможно будет вознаграждено.
Well, we’re excited to tell you that there is an ongoing task available on GNO.LAND for anyone to try out. The tricky part is that you have to participate using the CLI. We’ve created this guide for adventurous Gnomes who are willing to challenge themselves to complete the task for potential rewards.
Требования к серверу
Нету официальных требований.
Берем такой: 2CPU/2RAM/40GB SSD
Либо можно подселить.(Аккуратнее - космофорк!)
Установка
Подготовка
Обновляемся и устанавливаем необходимые пакеты
sudo apt update && sudo apt upgrade -y sudo apt install make clang pkg-config libssl-dev libclang-dev build-essential git curl ntp jq llvm tmux htop screen -y
if ! [ -x "$(command -v go)" ]; then ver="1.18.4" cd $HOME 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" >> ~/.bash_profile echo "export GOROOT=/usr/local/go" >> ~/.bash_profile echo "export GOPATH=$HOME/go" >> ~/.bash_profile echo "export GO111MODULE=on" >> ~/.bash_profile source ~/.bash_profile fi
Установка ноды и работа с нодой
git clone https://github.com/gnolang/gno/ #клонируем репозиторий с Github cd gno #Переходим в папку gno make #создаем бинарный файл cd ~ #возвращаемся обратно в родную папку или же рут папку (аналог команды cd $HOME) mv gno/build/gnokey /usr/local/bin #перемещаем бинарник chmod +x /usr/local/bin/gnokey #задаем разрешение на выполнение бинарника
gnokey add <acc_name>
Вместо <acc_name> придумываем свое и меняем.
Полученную мнемоническую фразу сохраняем в надежном месте.
gnokey add mrNixon
Если необходимо восстановить кошелек
Это необходимо делать если Вы по какой-либо причине утеряли доступ к аккаунту. Если нет, то переходим дальше.
gnokey add account --recover
Вводим пароль(и запоминаем его!) дважды. После чего вводим нашу мнемоническую фразу.
gnokey list
Сохраняем куда-нибудь, он нам еще пригодится.
p.s. я сделал два кошелька специально, ибо в мнемонике вместо слова было Unknown на первом кошельке. Если у вас такого нет, то Вам достаточно одного кошелька.
Получаем токены с крана
Нам понадобится ~250 токенов.
200 токенов на регистрацию, 50 на комиссию.
Где получить токены? https://test2.gno.land/faucet
Запросив токены, проверяем баланс
gnokey query auth/accounts/<address> --remote test2.gno.land:36657
Вместо <address> подставляем свой кошелек
Получаем примерно следующий результат
Сохраняем номер аккаунта(account_number) и sequence
Создаем файл с данными о нашей регистрации
gnokey maketx call <ADDRESS> --pkgpath "gno.land/r/users" \ --func "Register" \ --gas-fee 1000000ugnot \ --gas-wanted 3000000 \ --send "200000000ugnot" \ --args "" \ --args "<USER>" \ --args "" > unsigned.tx
<ADDRESS> и <USER> меняем на свои. <USER> должен состоять из маленьких букв и 6-17 символов.
gnokey sign <ADDRESS> \ --txpath unsigned.tx \ --chainid test2 \ --number <ACCOUNTNUMBER> \ --sequence <SEQUENCE> > signed.tx
<ADRESS>, <ACCOUNTNUMBER> и <SEQUENCE> меняем на свои данные, которые мы получали выше.
gnokey broadcast signed.tx --remote test2.gno.land:36657
Проверяем наличие нашего имени по ссылке https://gno.land/r/users
Советую воспользоваться поиском CTRL+F для Windows/CMD+F для MacOS
Создаем имя и проверяем его наличие в Boards
gnokey maketx call <ADRESS> \ --pkgpath "gno.land/r/boards" \ --func "CreateBoard" \ --gas-fee 1000000ugnot \ --gas-wanted 10000000 \ --send 1000000ugnot \ --broadcast true \ --chainid test2 \ --args "<BOARDNAME>" \ --remote test2.gno.land:36657
<ADRESS> - вставляем кошелек
<BOARDNAME> - вставляем наше имя
Если всё окей, то наше имя отобразится по ссылке https://test2.gno.land/r/boards
Вводим информацию и командная строка сгенерирует нам команду, которую мы выполним на нашем сервере
На этом всё, при желании, можно удалить ноду.
Удаление ноды
rm -rf /usr/bin/gnokey rm -rf gno rm -rf .gno