Утилита 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
:
$ aptos info
{
"Result": {
"build_branch": "main",
"build_cargo_version": "cargo 1.61.0 (a028ae42f 2022-04-29)",
"build_commit_hash": "9593a8d515b7c82886064812753b237d82075e35",
"build_os": "macos-aarch64",
"build_pkg_version": "0.2.1",
"build_rust_channel": "1.61.0-aarch64-apple-darwin",
"build_rust_version": "rustc 1.61.0 (fe5b13d68 2022-05-18)"
}
}
Примеры настроек
Настройка глобальной конфигурации
С помощью этой команды можно задать параметры глобальной конфигурации для 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
.
$ aptos config show-global-config
{
"Result": {
"config_type": "Global"
}
}
Настройка выполнения shell
Вы можете настроить завершения shell с помощью команды generate-shell-completions
. Пожалуйста, посмотрите конфигурацию для вашей конкретной shell. В настоящее время поддерживаются следующие shell [bash, zsh, fish, powershell, elvish]
. Ниже приведен пример для oh my zsh
.
$ aptos config generate-shell-completions --shell zsh --output-file ~/.oh-my-zsh/completions/_aptos
Настройка локальной конфигурации и создание учетной записи
Будет создана локальная папка .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
Приведенная выше команда выведет на ваш терминал следующую информацию:
{
"Result": [
{
"coin": {
"value": "10000"
},
"deposit_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "1"
}
}
},
"withdraw_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "2"
}
}
}
}
]
}
Вызов ресурсов в учетной записи
Вы можете вызвать список ресурсов в учетной записи из командной строки. Например, смотрите ниже, как вызвать список ресурсов в учетной записи, которую вы только что создали выше:
$ aptos account list --query resources --account 0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb
Приведенная выше команда выдаст на ваш терминал следующую информацию о списке ресурсов:
{
"Result": [
{
"coin": {
"value": "10000"
},
"deposit_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "1"
}
}
},
"withdraw_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "2"
}
}
}
},
{
"register_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "0"
}
}
}
},
{
"counter": "3"
},
{
"authentication_key": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"self_address": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"sequence_number": "0"
}
]
}
Вы можете дополнительно указать профиль по умолчанию из конфигурации, в которой не указана учетная запись.
$ aptos account list
{
"Result": [
{
"coin": {
"value": "10000"
},
"deposit_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "1"
}
}
},
"withdraw_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "2"
}
}
}
},
{
"register_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "0"
}
}
}
},
{
"counter": "3"
},
{
"authentication_key": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"self_address": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"sequence_number": "0"
}
]
}
Кроме того, любое место, где есть учетная запись, может использовать имя профиля:
$ aptos account list --query resources --account superuser
{
"Result": [
{
"coin": {
"value": "10000"
},
"deposit_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc",
"creation_num": "1"
}
}
},
"withdraw_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc",
"creation_num": "2"
}
}
}
},
{
"register_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc",
"creation_num": "0"
}
}
}
},
{
"counter": "3"
},
{
"authentication_key": "0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc",
"self_address": "0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc",
"sequence_number": "0"
}
]
}
Вызов модулей в учетной записи
Вы можете вызывать различные типы запросов для просмотра различных элементов под учетной записью. В настоящее время поддерживаются "ресурсы" и "модули", но в будущем появятся и другие типы запросов. Например, для получения модулей:
$ aptos account list --query modules
{
"Result": [
{
"bytecode": "0xa11ceb0b050000000b01000a020a12031c2504410405452d0772da0108cc0240068c030a0a9603150cab03650d90040400000101010201030104000506000006080004070700020e0401060100080001000009020300010f0404000410060100031107000002120709010602130a030106050806080105010802020c0a02000103040508020802070801010a0201060c010800010b0301090002070b030109000900074d657373616765056572726f72056576656e74067369676e657206737472696e67124d6573736167654368616e67654576656e740d4d657373616765486f6c64657206537472696e670b6765745f6d6573736167650b7365745f6d6573736167650c66726f6d5f6d6573736167650a746f5f6d657373616765076d657373616765156d6573736167655f6368616e67655f6576656e74730b4576656e7448616e646c65096e6f745f666f756e6404757466380a616464726573735f6f66106e65775f6576656e745f68616e646c650a656d69745f6576656e74b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb0000000000000000000000000000000000000000000000000000000000000001030800000000000000000002020a08020b08020102020c08020d0b030108000001000101030b0a002901030607001102270b002b0110001402010104010105240b0111030c040e0011040c020a02290120030b05120e000b040e00380012012d0105230b022a010c050a051000140c030a050f010b030a04120038010b040b050f0015020100010100",
"abi": {
"address": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"name": "Message",
"friends": [],
"exposed_functions": [
{
"name": "get_message",
"visibility": "public",
"is_entry": false,
"generic_type_params": [],
"params": [
"address"
],
"return": [
"0x1::string::String"
]
},
{
"name": "set_message",
"visibility": "public",
"is_entry": true,
"generic_type_params": [],
"params": [
"signer",
"vector<u8>"
],
"return": []
}
],
"structs": [
{
"name": "MessageChangeEvent",
"is_native": false,
"abilities": [
"drop",
"store"
],
"generic_type_params": [],
"fields": [
{
"name": "from_message",
"type": "0x1::string::String"
},
{
"name": "to_message",
"type": "0x1::string::String"
}
]
},
{
"name": "MessageHolder",
"is_native": false,
"abilities": [
"key"
],
"generic_type_params": [],
"fields": [
{
"name": "message",
"type": "0x1::string::String"
},
{
"name": "message_change_events",
"type": "0x1::event::EventHandle<0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb::Message::MessageChangeEvent>"
}
]
}
]
}
}
]
}
Перевод coins
Aptos CLI также является простым кошельком и может переводить монеты между учетными записями.
$ aptos account transfer --account superuser --amount 100
{
"Result": {
"gas_used": 73,
"balance_changes": {
"742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc": {
"coin": {
"value": "10100"
},
"deposit_events": {
"counter": "2",
"guid": {
"id": {
"addr": "0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc",
"creation_num": "1"
}
}
},
"withdraw_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc",
"creation_num": "2"
}
}
}
},
"b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb": {
"coin": {
"value": "9827"
},
"deposit_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "1"
}
}
},
"withdraw_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "2"
}
}
}
}
},
"sender": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"success": true,
"version": 1139,
"vm_status": "Executed successfully"
}
}
Пример с ключами
Генерирование ключа
Чтобы разрешить генерацию закрытых ключей, можно использовать команду aptos key generate
. Вы можете генерировать ключи x25519
или ed25519
.
$ aptos key generate --key-type ed25519 --output-file output.key
{
"Result": {
"PrivateKey Path": "output.key",
"PublicKey Path": "output.key.pub"
}
}
Генерация конфигурации Peer
Чтобы разрешить другим подключаться к вашей ноде, вам необходимо создать конфигурацию peer
. Ниже показано, как можно использовать aptos
CLI для создания конфигурации peer и записи ее в файл peer_config.yaml
.
$ aptos key extract-peer --output-file peer_config.yaml
Приведенная выше команда выведет на терминал следующий результат:
{
"Result": {
"8cfb85603080b13013b57e2e80887c695cfecd7ad8217d1cac22fa6f3b0b5752": {
"addresses": [],
"keys": [
"0x8cfb85603080b13013b57e2e80887c695cfecd7ad8217d1cac22fa6f3b0b5752"
],
"role": "Upstream"
}
}
}
Файл peer_config.yaml
будет создан в вашей текущей рабочей папке, с содержимым, как показано в примере ниже:
---
8cfb85603080b13013b57e2e80887c695cfecd7ad8217d1cac22fa6f3b0b5752:
addresses: []
keys:
- "0x8cfb85603080b13013b57e2e80887c695cfecd7ad8217d1cac22fa6f3b0b5752"
role: Upstream
Примечание: В строке адреса необходимо заполнить свой адрес.
Примеры MOVE
Сборка Move
Для локальной сборки пакета Move можно использовать aptos
CLI. В приведенном ниже примере используется блокчейн HelloBlockchain
в move-examples.
Адреса с именами могут быть либо адресом учетной записи, либо именем профиля.
$ aptos move compile --package-dir aptos-move/move-examples/hello_blockchain/ --named-addresses HelloBlockchain=superuser
Приведенная выше команда выведет на терминал следующий результат:
{
"Result": [
"742854F7DCA56EA6309B51E8CEBB830B12623F9C9D76C72C3242E4CAD353DEDC::Message"
]
}
Сборка и модульное тестирование Move
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.
aptos move prove --package-dir aptos-move/move-examples/hello_prover/
Приведенная выше команда выведет на терминал следующий результат:
SUCCESS proving 1 modules from package `hello_prover` in 1.649s
{
"Result": "Success"
}
Debug и вывод Stacktrace
В этом примере мы будем использовать DebugDemo
в debug-move-example.
Во-первых, вам нужно включить Move nursery в файл Move toml.
Теперь вы можете использовать Debug::print
и Debug::print_stack_trace
в вашем файле DebugDemo Move.
Вы можете выполнить следующую команду:
$ aptos move test --package-dir crates/aptos/debug-move-example
Команда выдаст следующий результат:
Running Move unit tests
[debug] 0000000000000000000000000000000000000000000000000000000000000001
Call Stack:
[0] 0000000000000000000000000000000000000000000000000000000000000001::Message::sender_can_set_message
Code:
[4] CallGeneric(0)
[5] MoveLoc(0)
[6] LdConst(0)
> [7] Call(1)
[8] Ret
Locals:
[0] -
[1] 0000000000000000000000000000000000000000000000000000000000000001
Operand Stack:
Публикация пакета Move с названным адресом
В этом примере мы будем использовать HelloBlockchain
в move-examples.
Опубликуйте пакет с адресом вашей учетной записи, установленным для HelloBlockchain
.
Здесь необходимо изменить 8946741e5c907c43c9e042b3739993f32904723f8e2d1491564d38959b59ac71 на адрес вашей учетной записи.
$ aptos move publish --package-dir aptos-move/move-examples/hello_blockchain/ --named-addresses HelloBlockchain=8946741e5c907c43c9e042b3739993f32904723f8e2d1491564d38959b59ac71
Вы можете дополнительно использовать названные профили для адресов. Первый держатель default
$ aptos move publish --package-dir aptos-move/move-examples/hello_blockchain/ --named-addresses HelloBlockchain=default
Запуск функции Move
Теперь, когда вы опубликовали вышеуказанную функцию, вы можете запустить ее.
Аргументы должны иметь тип с двоеточием для разделения. В этом примере мы хотим, чтобы входные данные были разобраны как строка, поэтому мы поместили string:Hello
!
$ aptos move run --function-id 0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb::message::set_message --args string:hello!
{
"Result": {
"changes": [
{
"address": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"data": {
"authentication_key": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"self_address": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"sequence_number": "3"
},
"event": "write_resource",
"resource": "0x1::account::Account"
},
{
"address": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"data": {
"coin": {
"value": "9777"
},
"deposit_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "1"
}
}
},
"withdraw_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "2"
}
}
}
},
"event": "write_resource",
"resource": "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>"
},
{
"address": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"data": {
"counter": "4"
},
"event": "write_resource",
"resource": "0x1::guid::Generator"
},
{
"address": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"data": {
"message": "hello!",
"message_change_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "3"
}
}
}
},
"event": "write_resource",
"resource": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb::Message::MessageHolder"
}
],
"gas_used": 41,
"success": true,
"version": 3488,
"vm_status": "Executed successfully"
}
}
Кроме того, профили могут заменять адреса в идентификаторе функции.
$ aptos move run --function-id default::message::set_message --args string:hello!
{
"Result": {
"changes": [
{
"address": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"data": {
"authentication_key": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"self_address": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"sequence_number": "3"
},
"event": "write_resource",
"resource": "0x1::account::Account"
},
{
"address": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"data": {
"coin": {
"value": "9777"
},
"deposit_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "1"
}
}
},
"withdraw_events": {
"counter": "1",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "2"
}
}
}
},
"event": "write_resource",
"resource": "0x1::coin::CoinStore<0x1::aptos_coin::AptosCoin>"
},
{
"address": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"data": {
"counter": "4"
},
"event": "write_resource",
"resource": "0x1::guid::Generator"
},
{
"address": "b9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"data": {
"message": "hello!",
"message_change_events": {
"counter": "0",
"guid": {
"id": {
"addr": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb",
"creation_num": "3"
}
}
}
},
"event": "write_resource",
"resource": "0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb::Message::MessageHolder"
}
],
"gas_used": 41,
"success": true,
"version": 3488,
"vm_status": "Executed successfully"
}
}
Примеры команд Ноды
Запуск локальной тестовой сети
Вы можете запустить локальный тестнет из 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:
git clone https://github.com/aptos-labs/aptos-core.git
cd aptos-core
git checkout --track origin/testnet
./scripts/dev_setup.sh
source ~/.cargo/env
Файл Layout
Файл Layout содержит:
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
, если оно отличается, конфигурация будет считаться недействительной.
Пример:
account_address: ccd49f3ea764365ac21e99f029ca63a9b0fbfab1c8d8d5482900e4fa32c5448a
consensus_key: "0xa05b8f41057ac72f9ca99f5e3b1b787930f03ba5e448661f2a1fac98371775ee"
account_key: "0x3d15ab64c8b14c9aab95287fd0eb894aad0b4bd929a5581bcc8225b5688f053b"
network_key: "0x43ce1a4ac031b98bb1ee4a5cd72a4cca0fd72933d64b22cef4f1a61895c2e544"
validator_host:
host: bobs_host
port: 6180
full_node_host:
host: bobs_host
port: 6182
stake_amount: 1
Чтобы создать его с помощью aptos
CLI:
1.Сгенерируйте ключи валидатора:
cargo run --package aptos -- genesis generate-keys --output-dir bobs
2.Создайте свою конфигурацию ValidatorConfiguration
:
cargo run --package aptos -- \\
genesis set-validator-configuration \\
--keys-dir bobs \\
--username bob \\
--validator-host bobs_host:6180 \\
--full-node-host bobs_host:6180 \\
--local-repository-dir .
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
и путевой точки поместите их в каталог конфигурации вашего валидатора и fullnode и запустите ваш валидатор и fullnode.
Top comments (0)