Утилита aptos - это интерфейс командной строки (CLI) для отладки, разработки и работы с нодой. В этом руководстве описано, как использовать утилиту aptos CLI.Чтобы установить CLI, см. руководство по установке Aptos CLI.
Справочник по командной строке
Доступные команды для вызова справочника. Введите aptos help или aptos --help, чтобы увидеть доступные варианты команды.
$ aptos 0.2.1
Aptos Labs <opensource@aptoslabs.com>
CLI tool for interacting with the Aptos blockchain and nodes
USAGE:
aptos <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
account CLI tool for interacting with accounts
config Tool for configuration of the CLI tool
genesis Tool for setting up and building the Genesis transaction
help Print this message or the help of the given subcommand(s)
info Show information about the build of the CLI
init Tool to initialize current directory for the aptos tool
key CLI tool for generating, inspecting, and interacting with keys
move CLI tool for performing Move tasks
node Tool for manipulating nodes
Также справочник доступен по конкретным командам. Например, введите aptos move --help, чтобы получить справку по конкретной команде.
$ aptos-move 0.2.1
CLI tool for performing Move tasks
USAGE:
aptos move <SUBCOMMAND>
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
compile Compiles a package and returns the [`ModuleId`]s
help Print this message or the help of the given subcommand(s)
init Creates a new Move package at the given location
publish Publishes the modules in a Move package
run Run a Move function
test Run Move unit tests against a package path
Также доступен справочник по подкомандам. Например, введите aptos move compile --help, чтобы получить справку по конкретной команде.
$ aptos-move-compile 0.2.1
Compiles a package and returns the [`ModuleId`]s
USAGE:
aptos move compile [OPTIONS]
OPTIONS:
-h, --help
Print help information
--named-addresses <NAMED_ADDRESSES>
Named addresses for the move binary
Example: alice=0x1234, bob=0x5678
Note: This will fail if there are duplicates in the Move.toml file remove those first.
[default: ]
--output-dir <OUTPUT_DIR>
Path to save the compiled move package
Defaults to `<package_dir>/build`
--package-dir <PACKAGE_DIR>
Path to a move package (the folder with a Move.toml file)
-V, --version
Print version information
Информация о CLI
Чтобы получить информацию о CLI для отладки, можно выполнить команду aptos info:
С помощью этой команды можно задать параметры глобальной конфигурации для CLI. Глобальная конфигурация находится в ~/.aptos/global_config.yaml. На данный момент единственным полем, которое можно настроить, является --config-type, которое позволяет вам установить, где будет установлена конфигурация профиля. По умолчанию это workspace, что означает, что текущий каталог (./.aptos/config.yaml), в котором запущен CLI, будет содержать конфигурацию. Если установлено значение global, то будет использоваться глобальное расположение папки (~/.aptos/config.yaml).
$ aptos config set-global-config --config-type global
{
"Result": "Success"
}
Вы также можете показать глобальную конфигурацию с помощью команды show-global-config.
Настройка выполнения shell
Вы можете настроить завершения shell с помощью команды generate-shell-completions. Пожалуйста, посмотрите конфигурацию для вашей конкретной shell. В настоящее время поддерживаются следующие shell [bash, zsh, fish, powershell, elvish]. Ниже приведен пример для oh my zsh.
Настройка локальной конфигурации и создание учетной записи
Будет создана локальная папка .aptos/ с конфигурацией config.yaml, которую можно использовать для хранения конфигурации между запусками CLI. Эта папка является локальной для вашего запуска, поэтому вам нужно будет продолжить запуск CLI из этой папки или повторно инициализировать в другой папке.
Шаг 1. Запустите Aptos init
Это инициализирует конфигурацию с заданным закрытым ключом.
$ aptos init
Configuring for profile default
Enter your rest endpoint [Current: None | No input: https://fullnode.devnet.aptoslabs.com]
No rest url given, using https://fullnode.devnet.aptoslabs.com...
Enter your faucet endpoint [Current: None | No input: https://faucet.devnet.aptoslabs.com]
No faucet url given, using https://faucet.devnet.aptoslabs.com...
Enter your private key as a hex literal (0x...) [Current: None | No input: Generate new key (or keep one if present)]
No key given, generating key...
Account 50A49D913AA6381C01579E3FC00784B49AFA3A771F06389EBC65F8FF3A4E9A7D doesn't exist, creating it and funding it with 10000 coins
Aptos is now set up for account 50A49D913AA6381C01579E3FC00784B49AFA3A771F06389EBC65F8FF3A4E9A7D! Run `aptos help` for more information about commands
{
"Result": "Success"
}
Шаг 2. Изменение конфигурации
Чтобы изменить конфигурацию, вы можете либо выполнить команду aptos init, либо вручную отредактировать файл .aptos/config.yaml, который находится в вашем текущем рабочем каталоге.
Шаг 3. Создание других профилей
Вы также можете создавать другие профили для разных командных точек и разных ключей. Их можно создать, добавив аргумент --profile, и использовать в большинстве других команд для замены аргументов командной строки.
$ aptos init --profile superuser
Configuring for profile superuser
Enter your rest endpoint [Current: None | No input: https://fullnode.devnet.aptoslabs.com]
No rest url given, using https://fullnode.devnet.aptoslabs.com...
Enter your faucet endpoint [Current: None | No input: https://faucet.devnet.aptoslabs.com]
No faucet url given, using https://faucet.devnet.aptoslabs.com...
Enter your private key as a hex literal (0x...) [Current: None | No input: Generate new key (or keep one if present)]
No key given, generating key...
Account 18B61497FD290B02BB0751F44381CADA1657C2B3AA6194A00D9BC9A85FAD3B04 doesn't exist, creating it and funding it with 10000 coins
Aptos is now set up for account 18B61497FD290B02BB0751F44381CADA1657C2B3AA6194A00D9BC9A85FAD3B04! Run `aptos help` for more information about commands
{
"Result": "Success"
}
Примеры учетных записей
Пополнение учетной записи с помощью faucet
Вы можете пополнить учетную запись на faucet через CLI, используя либо учетную запись, либо профиль:
$ aptos account fund --account B9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB
{
"Result": "Added 10000 coins to account B9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB"
}
$ aptos account fund --account default
{
"Result": "Added 10000 coins to account B9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB"
}
Просмотр баланса учетной записи и информации о переводах
Вы можете просматривать баланс и информацию о переводах (пополнение и снятие средств) с помощью:
$ aptos account list --query balance --account 0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb
Приведенная выше команда выведет на ваш терминал следующую информацию:
Вы можете вызвать список ресурсов в учетной записи из командной строки. Например, смотрите ниже, как вызвать список ресурсов в учетной записи, которую вы только что создали выше:
$ aptos account list --query resources --account 0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb
Приведенная выше команда выдаст на ваш терминал следующую информацию о списке ресурсов:
Вы можете вызывать различные типы запросов для просмотра различных элементов под учетной записью. В настоящее время поддерживаются "ресурсы" и "модули", но в будущем появятся и другие типы запросов. Например, для получения модулей:
Чтобы разрешить другим подключаться к вашей ноде, вам необходимо создать конфигурацию peer. Ниже показано, как можно использовать aptos CLI для создания конфигурации peer и записи ее в файл peer_config.yaml.
aptos CLI также можно использовать для сборки и локального запуска модульных тестов. В этом примере мы будем использовать HelloBlockchain в move-examples.
$ aptos move test --package-dir aptos-move/move-examples/hello_blockchain/ --named-addresses HelloBlockchain=superuser
Приведенная выше команда выведет на терминал следующий результат:
INCLUDING DEPENDENCY AptosFramework
INCLUDING DEPENDENCY AptosStdlib
INCLUDING DEPENDENCY MoveStdlib
BUILDING Examples
Running Move unit tests
[ PASS ] 0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc::MessageTests::sender_can_set_message
[ PASS ] 0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc::Message::sender_can_set_message
Test result: OK. Total tests: 2; passed: 2; failed: 0
{
"Result": "Success"
}
Доказательство MOVE
С помощью aptos CLI можно запустить Move Prover, который является инструментом формальной верификации для языка Move. Приведенный ниже пример подтверждает пакет hello_prover в move-examples.
Теперь, когда вы опубликовали вышеуказанную функцию, вы можете запустить ее.
Аргументы должны иметь тип с двоеточием для разделения. В этом примере мы хотим, чтобы входные данные были разобраны как строка, поэтому мы поместили string:Hello!
Вы можете запустить локальный тестнет из aptos CLI, который будет соответствовать версии, с которой он был собран. Кроме того, можно запустить faucet локальной одной нодой в тестнете.
$ aptos node run-local-testnet --with-faucet
Completed generating configuration:
Log file: "/Users/greg/.aptos/testnet/validator.log"
Test dir: "/Users/greg/.aptos/testnet"
Aptos root key path: "/Users/greg/.aptos/testnet/mint.key"
Waypoint: 0:d302c6b10e0fa68bfec9cdb383f24ef1189d8850d50b832365eea21ae52d8101
ChainId: TESTING
REST API endpoint: 0.0.0.0:8080
FullNode network: /ip4/0.0.0.0/tcp/6181
Aptos is running, press ctrl-c to exit
Это обеспечит стабильное состояние, если нода будет выключена, она начнет работу с предыдущего состояния. Если вы хотите перезапустить сеть из genesis, вы можете добавить флаг --force-restart.
$ aptos node run-local-testnet --with-faucet --force-restart
Are you sure you want to delete the existing chain? [yes/no] >
yes
Completed generating configuration:
Log file: "/Users/greg/.aptos/testnet/validator.log"
Test dir: "/Users/greg/.aptos/testnet"
Aptos root key path: "/Users/greg/.aptos/testnet/mint.key"
Waypoint: 0:649efc34c813d0db8db6fa5b1ffc9cc62f726bb5168e7f4b8730bb155d6213ea
ChainId: TESTING
REST API endpoint: 0.0.0.0:8080
FullNode network: /ip4/0.0.0.0/tcp/6181
Aptos is running, press ctrl-c to exit
Церемонии Genesis
Инструмент aptos поддерживает загрузку новых блокчейнов посредством так называемой церемонии генезиса. Результатом церемонии генезиса является вывод команд Move, которые подготавливают блокчейн к работе в режиме онлайн. Входные данные состоят из:
Набор валидаторов и их конфигурация
Начальный набор модулей Move, известный как фреймворк
Уникальный ChainId (u8), который отличает эту сеть от других развертываний.
Для тестовых сетей также существует учетная запись, которая управляет минтом AptosCoin
Генерирование Genesis
Органайзер genesis создает Layout и распределяет его.
Органайзер genesis подготавливает bytecode фреймворка Aptos и распределяет его.
Каждый участник создает свою конфигурацию ValidatorConfiguration и распределяет ее.
Каждый участник генерирует genesis.blob из полученных вкладов.
Организатор genesis выполняет genesis.blob для получения начальной путевой точки и распределяет ее.
Каждый участник создает свой aptos-node. При запуске aptos-node проверяет, что genesis.blob соответствует путевой точке, предоставленной организатором genesis.
Блокчейн начнет консенсус после того, как наберется необходимый stake.
Подготовка Aptos-core
Следующее руководство предполагает, что у вас есть доступ к репозиторию Aptos-core или связанным с ним инструментам. Вы можете загрузить и подготовить Aptos-core с GitHub:
root_key: открытый ключ Ed25519 для управления AptosCoin.
users: набор участников
chain_id: ChainId или уникальное целое число, которое отличает данное развертывание от других сетей Aptos
Пример:
root_key: "0xca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575"
users:
- alice
- bob
chain_id: 8
Создание Aptos фреймворк
Из репозитория Aptos-core создайте фреймворк и поместите его в папку:
cargo run --package framework
mkdir aptos-framework-release
cp aptos-framework/releases/artifacts/current/build/**/bytecode_modules/* aptos-framework-release
Фреймворк будет храниться в каталоге aptos-framework-release.
*Файл ValidatorConfiguration *
Файл ValidatorConfiguration содержит:
account_address: Учетная запись, которая управляет этим валидатором. Он должен быть получен из ключа account_key, предоставленного в файле ValidatorConfiguration.
consensus_key: Открытый ключ для аутентификации сообщений консенсуса от валидатора.
account_key: Открытый ключ для учетной записи, которая управляет этим валидатором. Он используется для получения адреса account_address.
network_key: Открытый ключ для аутентификации и шифрования сети валидатора и fullnode.
validator_host: сетевой адрес, на котором находится валидатор. Он содержит поле host и port. host должен быть либо именем DNS, либо IP-адресом. В настоящее время поддерживается только IPv4.
full_node_host: необязательный сетевой адрес, на котором находится fullnode. Содержит поле host и port. host должен быть либо именем DNS, либо IP-адресом. В настоящее время поддерживается только IPv4.
stake_amount: Количество монет, на которые делает ставку данная нода. Ожидается, что это значение будет равно 1, если оно отличается, конфигурация будет считаться недействительной.
3.Последняя команда создаст файл bob.yaml, который должен быть распределен среди других участников для генерации genesis.blob.
Генерация генезиса и путевой точки
genesis.blob и путевая точка могут быть сгенерированы после получения файла Layout, каждого из отдельных файлов ValidatorConfiguration и релиза фреймворка. Важно убедиться, что ValidatorConfiguration, предоставленный на предыдущем этапе, совпадает с дистрибутивом для генерации genesis.blob. Если есть несоответствие, сообщите об этом всем участникам.
Для генерации genesis.blob и путевой точки:
Поместите файл Layout в папку, например, genesis.
Поместите все файлы ValidatorConfiguration в папку genesis.
Убедитесь, что файлы ValidatorConfiguration перечислены под набором users в файле Layout.
Создайте папку framework в папке genesiss и поместите файлы .mv релиза framework в папку framework.
Используйте aptos CLI для генерации genesis и путевой точки:
cargo run --package aptos -- genesis generate-genesis --local-repository-dir genesis
Запуск aptos-node
После генерации genesis.blob и путевой точки поместите их в каталог конфигурации вашего валидатора и полной ноды и запустите ваш валидатор и полную ноду.