Autonity R5
- ChainID: 65100002
- Network Name:
Autonity Piccadilly (Barada) Testnet
- New RPC URL: https://rpc1.piccadilly.autonity.org/
- Symbol: ATN - для осуществления транзакций
- Symbol: NTN - для делегирования валидатору
- Explorer: https://piccadilly.autonity.org/
- Docs: https://docs.autonity.org/
- Genesis configuration: https://docs.autonity.org/networks/testnet-piccadilly/#genesis-configuration
- Telegram RU: https://t.me/autonity_ru
Основная информация и форма здесь - https://www.autonity.org/validators/#become-a-validator
Подготовка сервера
# обновляем репозитории 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
File2Ban - подробнее здесь и здесь
# устанавливаем и копируем конфиг, который будет иметь больший приоритет apt install fail2ban -y && \ cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local && \ nano /etc/fail2ban/jail.local # раскомментировать и добавить свой IP: ignoreip = 127.0.0.1/8 ::1 <ip> systemctl restart fail2ban # проверяем status systemctl status fail2ban # проверяем, какие jails активны (по умолчанию только sshd) fail2ban-client status # проверяем статистику по sshd fail2ban-client status sshd # смотрим логи tail /var/log/fail2ban.log # останавливаем работу и удаляем с автозагрузки #systemctl stop fail2ban && systemctl disable fail2ban
ver="1.21.3" && \ 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.13.0-rc-8b4a17c1-20240210
Важно: при проблемах с установкой aut или других бинарных файлов добавьте следующие переменные и сделайте make clean
перед повторной установкой
export CGO_CFLAGS="-O -D__BLST_PORTABLE__" export CGO_CFLAGS_ALLOW="-O -D__BLST_PORTABLE__" make clean
1. Устанавливаем утилиту Autonity Utility (aut)
Рекомендуемый способ взаимодействия с сетью Autonity - через утилиту Autonity Utility Tool aut
, которая предоставляет интерфейс командной строки для специфичных для Autonity запросов и операций, а также большую часть базовой функциональности Ethereum. Как правило, ее необходимо установить только на локальных компьютерах для подключения к конечной точке RPC клиента Autonity Go (либо вашего собственного узла, либо узла, предоставляющего общедоступный доступ RPC)
# Для ubuntu 20.04 cd apt install python3-pip && \ apt install python3.8-venv && \ pip install pipx
# Для ubuntu 22.04 cd apt install python3-pip && \ apt install python3.10-venv && \ pip install pipx
# если нужно установить определенную версию #pipx install --force 'https://github.com/autonity/aut/releases/download/v0.4.0.dev0/aut-0.4.0.dev0-py3-none-any.whl' #mv /root/.local/bin/aut /usr/local/bin/aut
# для установки или обновления 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
2. Устанавливаем Autonity node
Команда предполагает устанавливать Autonity Go на главном компьютере (VPS или другом хосте, который всегда включен и постоянно доступен), а отдельный локальный компьютер будет использоваться для создания транзакций и запросов, которые затем отправляются клиенту Autonity Go на главном компьютере через конечную точку RPC
В данном гайде мы запустим все на 1 сервере, но данные действия не рекомендуются!!!
Примечание. Это руководство предназначено для использования в тестовых сетях, для которых на карту не поставлено никакой реальной ценности. Производственная настройка, скорее всего, будет иметь требования, не описанные в этом руководстве, такие как доступность и безопасность ноды. Например, конфигурация, описанная здесь, предоставляет незашифрованную http
конечную точку RPC
Входящий трафик должен быть разрешен на:
Вы также можете разрешить трафик по следующим портам:
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.13.0 -b v0.13.0 make autonity mv $HOME/autonity/build/bin/autonity /usr/local/bin/
autonity version #Version: 0.13.0
Создаем каталог autonity-chaindata для хранения рабочих данных autonity и создаем нужные нам ключи
cd mkdir -p $HOME/autonity-chaindata/autonity
Начиная с версии 0.13.0 nodekey переименовали в autonitykeys. В данном руководстве мы будем генерировать nodekey самостоятельно. чтобы оставить старое название и добавлять флаг --autonitykeys $HOME/autonity-chaindata/autonity/nodekey
в сервисный файл
Нам необходимо создать nodekey, tresure.key и oracle.key
nodekey является главным ключом ноды, от которого формируется адрес валидатора и enode
tresure.key будет являться нашей сокровищницей. С помощью данного ключа мы будем делать делегирование на валидатора и на этот ключ будем получать вознаграждения
oracle.key будет использоваться в качестве криптографического идентификатора сервера Oracle и будет использоваться для подписания транзакций отчета о ценах, отправляемых в Oracle Contract on-chain
Транзакционные издержки за отправку данных отчета о ценах в сети возмещаются, но необходимо предварительно пополнить счет oracle.key, чтобы предотвратить ошибку нехватки газа при первой транзакции.
!!!Обязательно пополните Oracle кошелек после запуска ноды!!!
autonity genAutonityKeys $HOME/autonity-chaindata/autonity/nodekey --writeaddress
#Node address: 0xac16454f6D7B5725F4221f86D935963C87Dae7F5 #Node public key: 0x1988dee846c92a7a95b5ddc62a808fb59f48206a34eb13f4c8761e4c470adc99da1c0f3963515c683c1cf02dd5248af784041ea0084cbb854942d1583173a089 #Consensus public key: 0x87f764f47664b635290ffaa567bcc9caf6ef7a51116cafc7c06c7e24710bf91ec5206a359592c037f6ed5c7f44742628
Создаем отдельный каталог для 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
Нам не нужны, бутноды, так как все должно подтягиваться с помощью флага --piccadilly
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 sudo systemctl restart autonity && journalctl -u autonity -f -o cat
Важно: если нода не может запуститься, то добавьте бутноды в сервисный файл
--bootnodes enode://48a10db920251436ee1d7989db6cbab734157d5bd3ec9d534021e4903fdab51407ba4fd936bd6af1d188e3f464374c437accefa40f0312eac9bc9ae6fc0a2782@34.105.239.129:30303,enode://9379179c8c0f7fec28dd3cca64da5d85f843e3b05ba24f6ae4f8d1bb688b4581f92c10e84e166328499987cf2da18668446dd7353724cf691ad2a931a0cbd88d@34.93.237.13:30303,enode://c7e8619c09c85c47a2bbda720ecec449ab1207574cc60d8ec451b109b407d7542cabc2683eedcf326009532e3aea2b748256bac1d50bf877c73eea4d633e8913@54.241.251.216:30303,enode://e7cea14b38d590066217b6639ee24f964b5ec3f5db127e460b695562495f5d04d2063b71a86baeaddbf318d204e4322dee2271c9dbcf462650f2547233fd2f67@178.205.102.224:30303,enode://219f542340d5f59e962f4a841b91825d098c61fee2751ec82c1440a4710b5c625d6c8fdc1bc3fc482369be83b23e59b3e983c8f463d39cb85f8d46665fca0bb4@217.66.20.45:30303,enode://d949e4858e2d3e06bd9f4b15de17b5bbdab111f9964b73cde40d78bc8af30cdf829072ad298cc744253aba74133b21eba214bc3b4cb42ead3f04c32c8b902656@92.255.196.146:30303
3. Install Oracle
Команда предполагает, что Autonity Oracle будет работать на отдельном устройстве (VPS или другом хосте, который всегда включен и постоянно доступен), и отдельный сервер будет использоваться для клиента Autonity Go, Подразумевается, что oracle будет работать через WSS
В данном гайде мы запустим все на 1 сервере, но данные действия не рекомендуются
Входящий трафик должен быть разрешен на:
cd
git clone https://github.com/autonity/autonity-oracle && cd autonity-oracle git fetch --all git checkout v0.1.6 make autoracle mv build/bin/autoracle /usr/local/bin #cp e2e_test/plugins/simulator_plugins/sim_plugin build/bin/plugins/sim_plugin
autoracle version #v0.1.6
nano $HOME/autonity-oracle/build/bin/plugins-conf.yml
В plugins-conf.yml
необходимо раскомментировать нижние строки, зарегистрироваться по ссылкам, получить апи ключи и добавить их ниже. Также обязательно добавьте время запроса refresh: 3600 как на скриншоте ниже, чтобы не сгорели быстро лимиты на API
- https://currencyfreaks.com
- https://openexchangerates.org
- https://currencylayer.com
- https://www.exchangerate-api.com
Мой файл для примера выглядит следующим образом
ФОРМА 1 - РЕГИСТРАЦИЯ
ВАЖНО - регистрируйтесь, только если Вы не участвовали в раунде 4 (R4)
Самое время зарегистрировать свое участие в тестовой сети, чтобы получить тестовые токены. Для этого переходим на сайт и заполняем данные - https://game.autonity.org/getting-started/register.html
- В поле autonity address вставьте адрес tresure
- В поле Signature hash вставьте хеш подписанной транзакции после команды
aut account sign-message "I have read and agree to comply with the Piccadilly Circus Games Competition Terms and Conditions published on IPFS with CID QmVghJVoWkFPtMBUcCiqs7Utydgkfe19wkLunhS5t57yEu"
После регистрации Вы получите электронное письмо с подтверждением и на баланс должны прийти токены. Проверить баланс можно в эксплорер или командой aut account info
Декодирование ключевого файла/получение закрытого ключа
ethkey inspect --private /root/.autonity/keystore/oracle.key
после команды вы увидите закрытый ключ от учетной записи oracle! Его необходимо использовать ниже в команде genOwnershipProof
РЕГИСТРАЦИЯ ВАЛИДАТОРА
После того, как на балансе появятся токены можно продолжать
Шаг 1. Создаем криптографическое подтверждение владения узлом
Замените <privatekey oracle>
и <tresure account address>
на свои значения
autonity genOwnershipProof --autonitykeys $HOME/autonity-chaindata/autonity/nodekey --oraclekeyhex <privatekey oracle> <tresure account address>
!!! после транзакции сохраняем Signature hex
Шаг 2. Определяем enode и адрес валидатора
# получаем enode aut node info
# получаем адрес валидатора aut validator compute-address <enode>
!!! после транзакций сохраните адрес валидатора и enode
Шаг 3. Получаем consensus public key
ethkey autinspect $HOME/autonity-chaindata/autonity/nodekey
Шаг 4. Отправляем транзакцию регистрации с кошелька tresure
# регистрируем валидатора aut validator register <ENODE> <ORACLE_ADDRESS> <CONSENSUS_KEY> <PROOF> | aut tx sign - | aut tx send -
!!! после транзакции сохраняем хеш
Теперь мы можем попробовать найти свой адрес валидатора в списке
aut validator list
aut validator info --validator <0x550454352B8e1EAD5F27Cce108EF59439B18E249>
Создаем сервисный файл для 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 -
ФОРМА 2 - РЕГИСТРАЦИИ ВАЛИДАТОРА
Самое время зарегистрировать своего валидатор. Для этого переходим на сайт и заполняем данные - https://game.autonity.org/awards/register-validator.html
На ноде необходимо подписать сообщение aut account sign-message "validator onboarded"
и вставлить хеш в графу SIGNATURE OF MESSAGE VALIDATOR ONBOARDED. Подписывать нужно кошельком nodekey. Поэтому сначала нам необходимо конвертировать nodekey в нужный формат
Шаг 1. Получаем ключ узла из файла nodekey (autonitykeys)
Данная операция покажет в терминале Ваш private node key
head -c 64 $HOME/autonity-chaindata/autonity/nodekey #
Шаг 2. Из полученного privat создаем nodekey в домашнем каталоге и вписываем в него полученный из предыдущей команды privat key
nano $HOME/nodekey2
Шаг 3. Получаем ключ узла из файла nodekey (autonitykeys)
aut account import-private-key $HOME/nodekey2
Шаг 4. Переименовываем кошелек в удобно читаемый формат
mv $HOME/.autonity/keystore/UTC* $HOME/.autonity/keystore/nodekey.key
aut account sign-message "validator onboarded" -k $HOME/.autonity/keystore/nodekey.key
Как только валидатор будет выбран в комитет мы должны увидеть подобные логи на ноде
Перенос валидатора
Если нам необходимо перенести валидатора, то перед этим необходимо сохранить все наши ключи и nodekey (autonitykeys). Также запомните старый IP адрес сервера
1. Если Вы валидируете и находитесь в активном сете (комитет), то обязательно сначала остановите валидирование. При этом активное участие валидатора в комитете приостанавливается до повторной активации. Ставка не освобождается от привязки автоматически
aut validator pause --validator <VALIDATOR_IDENTIFIER_ADDRESS> | aut tx sign - | aut tx send -
2. Для того, чтобы убедиться что валидатор остановлен используем следующую команду, в которой значение "state": 1. Также проверьте какая эпоха идет в настоящее время. Запускать валидатора на новом сервере рекомендую после начала следующей эпохи
После того как убедились что "state": 1 можете останавливать ноду и оракла на старом сервере
aut validator info --validator <VALIDATOR_IDENTIFIER_ADDRESS>
3. Если Вы ранее не сохраняли nodekey и остальные ключи, то сейчас самое время сделать это. Нам необходимо будет подменить наши ключи на новом сервере
4. На новом сервере установите ноду и aut, но не запускайте!!!
5. Создайте каталог и подкаталог autonity-chaindata/autonity
. После создания перенесите туда файл nodekey (autonitykeys)
mkdir -p autonity-chaindata/autonity
6. Теперь стандартно запускаем ноду для синхронизации, предварительно добавив к запуску ключ --nat extip:<IP of old server>. Я при пробном переносе использовал именно IP от старого сервера
7. Запускаем валидатора дождавшись смены эпохи
aut validator activate --validator <VALIDATOR_IDENTIFIER_ADDRESS> | aut tx sign - | aut tx send -
Торговля на CAX
CAX это централизованной автоматическая биржа. Если Вы уже регистрировали провайдера, то Ваша учетная запись на CAX автоматически создана и пополнена на 1 МЛН поддельных долларов США. Она связана с вашей зарегистрированной учетной записью участника, поэтому можно легко перемещать активы между внутренней и внешней сетями
Биржа использует ключи API для аутентификации, поэтому необходимо создать ключ API для своей учетной записи, прежде чем приступать к торговле
apt install snapd sudo snap install httpie
MESSAGE=$(jq -nc --arg nonce "$(date +%s%N)" '$ARGS.named')
Подписываем сообщение с помощью aut
aut account sign-message $MESSAGE message.sig -k $HOME/.autonity/keystore/tresure.key > message.sig
Отправляем сообщение с использованием HTTPie для получения нового ключа API. После выполнения команды запишите вывод!!!
echo -n $MESSAGE | https https://cax.piccadilly.autonity.org/api/apikeys api-sig:@message.sig
Теперь с помощью полученного API можно взаимодействовать с CAX
KEY=<ВАШ_API> # просмотр баланса кошелька tresure aut account info -k $HOME/.autonity/keystore/tresure.key # Просмотр оффчейн баланса https GET https://cax.piccadilly.autonity.org/api/balances/ API-Key:$KEY # просмотр книги заказов https GET https://cax.piccadilly.autonity.org/api/orderbooks/ API-Key:$KEY # получение текущих цен для пары NTN-USD https GET https://cax.piccadilly.autonity.org/api/orderbooks/NTN-USD/quote API-Key:$KEY # получение текущих цен для пары ATN-USD https GET https://cax.piccadilly.autonity.org/api/orderbooks/ATN-USD/quote API-Key:$KEY # покупка актива NTN (лимитный ордер) https POST https://cax.piccadilly.autonity.org/api/orders/ API-Key:$KEY pair=NTN-USD side=bid price=10.04 amount=1000 # покупка актива ATN (лимитный ордер) https POST https://cax.piccadilly.autonity.org/api/orders/ API-Key:$KEY pair=ATN-USD side=bid price=1.04 amount=100000 # просмотр статуса ордера (нужен номер "order_id" который вы получите в ответ на прошлый запрос) https GET https://cax.piccadilly.autonity.org/api/orders/236655 API-Key:$KEY # отменить открытый ордер https DELETE https://cax.piccadilly.autonity.org/api/orders/313469 API-Key:$KEY # вывод из офчейна https POST https://cax.piccadilly.autonity.org/api/withdraws/ API-Key:$KEY symbol=NTN amount=10 # депозит в офчейн aut tx make --to <RECIPIENT_ADDRESS> --value <AMOUNT> --ntn | aut tx sign - | aut tx send -
Полезные команды
# посмотреть информацию о ноде aut node info # посмотреть баланс aut account info aut account info 0x7179cc425bd66F40DBE958afecb488F71eCCDB84 # посмотреть список валидаторов aut validator list # проверка информации о валиаторе aut validator info --validator 0x27b196cc27aa3b873eb96B5283025A2c1D075747 curl -X GET 'https://rpc1.piccadilly.autonity.org/' --header 'Content-Type: application/json' --data '{"jsonrpc":"2.0", "method":"aut_getValidator", "params":["0x27b196cc27aa3b873eb96B5283025A2c1D075747"], "id":1}' # проверить нахождение в комитете aut protocol get-committee aut protocol get-committee-enodes # выйти из тюрьмы aut validator activate --validator <VALIDATOR_IDENTIFIER_ADDRESS> | aut tx sign - | aut tx send -
# проверить информацию о кошельке aut account info aut account info 0x7179cc425bd66F40DBE958afecb488F71eCCDB84 # проверить баланс кошелька aut account balance aut account balance 0x7179cc425bd66F40DBE958afecb488F71eCCDB84 # перечислить все ключи в каталоге хранилища ключей aut account list # декодирование ключевого файла для получение private-key из файла .key ethkey inspect --private /root/.autonity/keystore/tresure.key # импортировать private-key в виде открытого текста (в шестнадцатеричном формате) # предварительно создайте текстовый файл, содержащий закрытый ключ в шестнадцатеричном формате. Например, скопируйте свой закрытый ключ в файл с именем alice.priv aut account import-private-key $HOME/alice.priv # отправить транзакцию aut tx make --to <0x1........> --value 1 --ntn | aut tx sign - | aut tx send - aut tx make --to <0x1........> --value 0.1 | aut tx sign - | aut tx send - aut tx make --to <0x1........> --value 0.1 -k $HOME/.autonity/keystore/tresure.key | aut tx sign -k $HOME/.autonity/keystore/tresure.key - | aut tx send -
# проверить текущую эпоху aut protocol epoch-id --rpc-endpoint https://rpc1.piccadilly.autonity.org
rm -r autonity-chaindata/ mkdir -p $HOME/autonity-chaindata/autonity # переносим nodekey
systemctl stop autonity && \ systemctl disable autonity && \ rm /etc/systemd/system/autonity.service && \ systemctl daemon-reload && \ cd $HOME && \ rm -rf .autonity autonity-chaindata autonity
systemctl stop antoracle && \ systemctl disable antoracle && \ rm /etc/systemd/system/antoracle.service && \ systemctl daemon-reload && \ cd $HOME && \ rm -rf autonity-oracle
Выражаю огромную благодарность ZUKA (zuka_116) за его значительный вклад в написание данного гайда