Autonity - Шосты раўнд Piccadilly Circus Games Competition
Шосты раўнд будзе працягвацца з 26.06.2024 на працягу 6 тыдняў, калі каманда не зменіць часовыя рамкі.
У дадзеным кіраўніцтве разгледзім запуск валідатары ў тэставай сеткі Piccadilly.
# абнаўляем рэпазітары 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 chrony libleveldb-dev liblz4-tool -y
# yсталёўваем GO ver="1.22.1" && \ 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
Ўсталёўваем ethkey, які нам спатрэбіцца далей для выцягвання прыватнага ключа
git clone https://github.com/autonity/autonity.git autonity1 cd autonity1 make all mv build/bin/ethkey /usr/local/bin ethkey --version #ethkey version 0.14.0-15cd0164-20240619
Рэкамендуемы спосаб ўзаемадзеяння з сеткай Autonity - праз ўтыліту Autonity Utility Tool aut, якая дае інтэрфейс каманднага радка для спецыфічных для Autonity запытаў і аперацый, а таксама большую частку базавай функцыянальнасці Ethereum. Як правіла, яго трэба ўсталяваць толькі на лакальных кампутарах для падлучэння да канчатковай кропкі RPC кліента Autonity Go (альбо ўласнага вузла, альбо вузла, які забяспечвае агульнадаступны доступ RPC)
# для ubuntu 20.04 - v3.8 для 22.04 - v3.10 cd apt install python3-pip && \ apt install python3.8-venv && \ pip install pipx
# для ўстаноўкі або абнаўлення pipx install --force git+https://github.com/autonity/aut mv /root/.local/bin/aut /usr/local/bin/aut aut --version #aut, version 0.4.0
Ствараем .autrc файл, дзякуючы якому aut ўтыліта будзе шукаць пэўную канфігурацыю
tee <<EOF >/dev/null $HOME/.autrc [aut] rpc_endpoint= ws://127.0.0.1:8546 EOF
Каманда мяркуе ўсталёўваць Autonity Go на галоўным кампутары (VPS або іншым хасце, які заўсёды ўключаны і пастаянна даступны), а асобны лакальны кампутар будзе выкарыстоўвацца для стварэння транзакцый і запытаў, якія затым адпраўляюцца кліенту Autonity Go на галоўным кампутары праз канчатковую кропку RPC
Ўваходны трафік павінен быць дазволены на:
-TCP, UDP 30303 для сувязі з вузлом p2p (DEVp2p)
Вы таксама можаце дазволіць трафік па наступных партоў:
-TCP 8545 каб усталяваць http RPC - злучэння з вузлом
-TCP 8546 каб усталяваць RPC - злучэнні WebSocket з вузлом
-TCP 6060 для экспарту паказчыкаў Autonity (рэкамендуецца, але не абавязкова)
cd git clone https://github.com/autonity/autonity && cd autonity git checkout tags/v0.14.0 -b v0.14.0 make autonity mv $HOME/autonity/build/bin/autonity /usr/local/bin/ autonity version #Version: 0.14.0
Ствараем каталог autonity-chaindata для захоўвання працоўных дадзеных autonity і ствараем патрэбныя нам ключы
cd mkdir -p $HOME/autonity-chaindata/autonity
Нам неабходна стварыць nodekey, tresure.key і oracle.key.
nodekey з'яўляецца галоўным ключом ноды, ад якога фармуецца адрас валідатары і enode.
tresure.key будзе з'яўляцца нашай скарбніцай. З дапамогай дадзенага ключа мы будзем рабіць дэлегаванне на валідатары і на гэты ключ будзем атрымліваць узнагароды.
oracle.key будзе выкарыстоўвацца ў якасці крыптаграфічнага ідэнтыфікатара сервера Oracle і будзе выкарыстоўвацца для падпісання транзакцый справаздачы аб цэнах, якія адпраўляюцца ў Oracle Contract on-chain.
Транзакцыйных выдаткі за адпраўку дадзеных справаздачы аб цэнах у сеткі пакрываюцца, але неабходна папярэдне папоўніць рахунак oracle.key, каб прадухіліць памылку недахопу газу пры першай транзакцыі.
Абавязкова папоўніце oracle кашалёк пасля запуску ноды з tresure!
autonity genAutonityKeys $HOME/autonity-chaindata/autonity/nodekey --writeaddress #Node address: 0x.............. #Node public key: 0x........................... #Consensus public key: 0x...........................
Ствараем асобны каталог для tresure.key і oracle.key
mkdir -p $HOME/.autonity/keystore
Ствараем кашалёк oracle і захоўваем створаны файл
aut account new -k $HOME/.autonity/keystore/oracle.key #
Ствараем кашалёк tresure і захоўваем створаны файл
aut account new -k $HOME/.autonity/keystore/tresure.key #
Важна: абавязкова рабіце рэзервовыя копіі вашых ключоў. Таксама запамінайце фразу-пароль, якую вы выкарыстоўвалі пры яго стварэнні!
Цяпер дадаем у .autrc наш ключ tresure
nano $HOME/.autrc
Дадаецца радок keyfile=/root/.autonity/keystore/tresure.key
Ствараем сэрвісны файл і запускаем яго
tee <<EOF >/dev/null /etc/systemd/system/autonity.service [Unit] Description=autonity node After=network.target [Service] User=$USER Type=simple ExecStart=$(which autonity) --datadir $HOME/autonity-chaindata --syncmode full --piccadilly --http --http.addr 0.0.0.0 --http.api aut,eth,net,txpool,web3,admin --http.vhosts \* --ws --ws.addr 127.0.0.1 --ws.api aut,eth,net,txpool,web3,admin --autonitykeys $HOME/autonity-chaindata/autonity/nodekey --nat extip:$(curl 2ip.ru) Restart=on-failure LimitNOFILE=65535 [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable autonity systemctl restart autonity && journalctl -u autonity -f -o cat
Мяркуецца, што Autonity Oracle будзе працаваць на асобным прыладзе (VPS або іншым хасце, які заўсёды ўключаны і пастаянна даступны), і асобны сервер будзе выкарыстоўвацца для кліента Autonity Go, маецца на ўвазе, што oracle будзе працаваць праз WSS
У дадзеным гайдзе мы запусцім усё на 1 сэрвэры, але дадзеныя дзеянні не рэкамендуюцца!
Ўваходны трафік павінен быць дазволены на:
- TCP 8546 для падлучэння WebSocket RPC да вузла
cd git clone https://github.com/autonity/autonity-oracle && cd autonity-oracle git fetch --all git checkout v0.1.9 make autoracle mv build/bin/autoracle /usr/local/bin autoracle version #v0.1.9
nano $HOME/autonity-oracle/build/bin/plugins-conf.yml
У plugins-conf.yml неабходна раскаментаваць ніжнія радкі, зарэгістравацца па спасылках, атрымаць API ключы і дадаць іх ніжэй.
https://currencyfreaks.com
https://openexchangerates.org
https://currencylayer.com
https://www.exchangerate-api.com
Самы час зарэгістраваць свой удзел у тэставай сеткі, каб атрымаць тэставыя токены. Для гэтага пераходзім на сайт і запаўняем дадзеныя - https://game.autonity.org/getting-started/register.html
Пасля рэгістрацыі вы атрымаеце электронны ліст з пацвярджэннем і на баланс павінны прыйсці токены. Праверыць баланс можна ў эксплорер або камандай aut account info
Дэкадаванне ключавога файла / атрыманне закрытага ключа
ethkey inspect --private /root/.autonity/keystore/oracle.key
Пасля каманды вы ўбачыце закрыты ключ ад ўліковага запісу oracle! Яго неабходна выкарыстоўваць ніжэй у камандзе genOwnershipProof
Калі на балансе з'явяцца токены можна працягваць
Ствараем крыптаграфічнае пацверджанне валодання вузлом.
Заменіце <privatekey oracle> і <tresure account address> на свае значэння
autonity genOwnershipProof --autonitykeys $HOME/autonity-chaindata/autonity/nodekey --oraclekeyhex <privatekey oracle> <tresure account address>
!пасля транзакцыі захоўваем Signature hex
Вызначаем enode і адрас валідатары
# атрымліваем enode aut node info
# получаем адрес валидатора aut validator compute-address <enode>
!пасля транзакцый захавайце адрас валідатары і enode
Атрымліваем consensus public key
ethkey autinspect $HOME/autonity-chaindata/autonity/nodekey
Адпраўляем транзакцыю рэгістрацыі з кашалька tresure
# рэгіструем валідатары aut validator register <ENODE> <ORACLE_ADDRESS> <CONSENSUS_KEY> <PROOF> | aut tx sign - | aut tx send -
<PROOF> - Signature hex genOwnershipProof
!пасля транзакцыі захоўваем хэш
Цяпер мы можам паспрабаваць знайсці свой адрас валідатары ў спісе
aut validator list
validator info --validator <0x...........>
Ствараем сэрвісны файл для oracle і запускаем яго. Папярэдне дапішыце пароль ад кашалька ў сэрвісны файл
tee <<EOF >/dev/null /etc/systemd/system/antoracle.service [Unit] Description=Autonity Oracle Server After=syslog.target network.target [Service] Type=simple ExecStart=$(which autoracle) -key.file="/root/.autonity/keystore/oracle.key" -plugin.dir="/root/autonity-oracle/build/bin/plugins/" -plugin.conf="/root/autonity-oracle/build/bin/plugins-conf.yml" -key.password="" -ws="ws://127.0.0.1:8546" Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target EOF
systemctl daemon-reload systemctl enable antoracle systemctl restart antoracle && journalctl -u antoracle -f -o cat
Цяпер нам неабходна застэйкаць NTN на валідатара. Стэйк з'явіцца да наступнай эпосе
aut validator bond --validator <адрас_валидатора> 1 | aut tx sign - | aut tx send -
Неабходна будзе запоўніць наступную форму - https://stake-delegation.pages.dev/#join
Атрымліваем ключ вузла з файла nodekey (autonitykeys). Дадзеная аперацыя пакажа ў тэрмінале Ваш private node key
head -c 64 $HOME/autonity-chaindata/autonity/nodekey #
З атрыманага privat ствараем nodekey ў хатнім каталогу і ўпісваем у яго атрыманы з папярэдняй каманды privat key
nano $HOME/nodekey2
Атрымліваем ключ вузла з файла nodekey (autonitykeys)
aut account import-private-key $HOME/nodekey2
Пераназываем кашалёк у зручна чытаны фармат
mv $HOME/.autonity/keystore/UTC* $HOME/.autonity/keystore/nodekey.key
aut account sign-message "Application for the stake delegation program" -k $HOME/.autonity/keystore/nodekey.key
Як толькі валідатар будзе выбраны ў камітэт вы павінны ўбачыць падобныя логі на нодзе:
Я выкарыстоўваю dedicated server, так як на VPS нода можа працаваць не стабільна (асабліва калі браць, напрыклад, Contabo).
Афіцыйная дакументацыя: https://docs.autonity.org/