Утилитаaptos
- это интерфейс командной строки (CLI) для отладки, разработки и работы с нодой. В этом руководстве описано, как использовать утилитуaptos
CLI.Чтобы установить CLI, см.руководство по установке Aptos CLI.
Справочник по командной строке
Доступные команды для вызова справочника. Введитеaptos help
илиaptos --help
, чтобы увидеть доступные варианты команды.
$aptos0.2.1AptosLabs<opensource@aptoslabs.com>CLItoolforinteractingwiththeAptosblockchainandnodesUSAGE:aptos<SUBCOMMAND>OPTIONS:-h,--helpPrinthelpinformation-V,--versionPrintversioninformationSUBCOMMANDS:accountCLItoolforinteractingwithaccountsconfigToolforconfigurationoftheCLItoolgenesisToolforsettingupandbuildingtheGenesistransactionhelpPrintthismessageorthehelpofthegivensubcommand(s)infoShowinformationaboutthebuildoftheCLIinitTooltoinitializecurrentdirectoryfortheaptostoolkeyCLItoolforgenerating,inspecting,andinteractingwithkeysmoveCLItoolforperformingMovetasksnodeToolformanipulatingnodes
Также справочник доступен по конкретным командам. Например, введитеaptos move --help
, чтобы получить справку по конкретной команде.
$aptos-move0.2.1CLItoolforperformingMovetasksUSAGE:aptosmove<SUBCOMMAND>OPTIONS:-h,--helpPrinthelpinformation-V,--versionPrintversioninformationSUBCOMMANDS:compileCompilesapackageandreturnsthe[`ModuleId`]shelpPrintthismessageorthehelpofthegivensubcommand(s)initCreatesanewMovepackageatthegivenlocationpublishPublishesthemodulesinaMovepackagerunRunaMovefunctiontestRunMoveunittestsagainstapackagepath
Также доступен справочник по подкомандам. Например, введитеaptos move compile --help
, чтобы получить справку по конкретной команде.
$aptos-move-compile0.2.1Compilesapackageandreturnsthe[`ModuleId`]sUSAGE:aptosmovecompile[OPTIONS]OPTIONS:-h,--helpPrinthelpinformation--named-addresses<NAMED_ADDRESSES>NamedaddressesforthemovebinaryExample:alice=0x1234,bob=0x5678Note:ThiswillfailifthereareduplicatesintheMove.tomlfileremovethosefirst.[default:]--output-dir<OUTPUT_DIR>PathtosavethecompiledmovepackageDefaultsto`<package_dir>/build`--package-dir<PACKAGE_DIR>Pathtoamovepackage(thefolderwithaMove.tomlfile)-V,--versionPrintversioninformation
Информация о CLI
Чтобы получить информацию о CLI для отладки, можно выполнить командуaptos info
:
$aptosinfo{"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
).
$aptosconfigset-global-config--config-typeglobal{"Result":"Success"}
Вы также можете показать глобальную конфигурацию с помощью командыshow-global-config
.
$aptosconfigshow-global-config{"Result":{"config_type":"Global"}}
Настройка выполнения shell
Вы можете настроить завершения shell с помощью командыgenerate-shell-completions
. Пожалуйста, посмотрите конфигурацию для вашей конкретной shell. В настоящее время поддерживаются следующие shell[bash, zsh, fish, powershell, elvish]
. Ниже приведен пример дляoh my zsh
.
$aptosconfiggenerate-shell-completions--shellzsh--output-file~/.oh-my-zsh/completions/_aptos
Настройка локальной конфигурации и создание учетной записи
Будет создана локальная папка.aptos/
с конфигурациейconfig.yaml
, которую можно использовать для хранения конфигурации между запусками CLI. Эта папка является локальной для вашего запуска, поэтому вам нужно будет продолжить запуск CLI из этой папки или повторно инициализировать в другой папке.
Шаг 1. Запустите Aptos init
Это инициализирует конфигурацию с заданным закрытым ключом.
$aptosinitConfiguringforprofiledefaultEnteryourrestendpoint[Current:None|Noinput:https://fullnode.devnet.aptoslabs.com]Noresturlgiven,usinghttps://fullnode.devnet.aptoslabs.com...Enteryourfaucetendpoint[Current:None|Noinput:https://faucet.devnet.aptoslabs.com]Nofauceturlgiven,usinghttps://faucet.devnet.aptoslabs.com...Enteryourprivatekeyasahexliteral(0x...)[Current:None|Noinput:Generatenewkey(orkeeponeifpresent)]Nokeygiven,generatingkey...Account50A49D913AA6381C01579E3FC00784B49AFA3A771F06389EBC65F8FF3A4E9A7Ddoesn't exist, creating it and funding it with 10000 coinsAptos 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
, и использовать в большинстве других команд для замены аргументов командной строки.
$aptosinit--profilesuperuserConfiguringforprofilesuperuserEnteryourrestendpoint[Current:None|Noinput:https://fullnode.devnet.aptoslabs.com]Noresturlgiven,usinghttps://fullnode.devnet.aptoslabs.com...Enteryourfaucetendpoint[Current:None|Noinput:https://faucet.devnet.aptoslabs.com]Nofauceturlgiven,usinghttps://faucet.devnet.aptoslabs.com...Enteryourprivatekeyasahexliteral(0x...)[Current:None|Noinput:Generatenewkey(orkeeponeifpresent)]Nokeygiven,generatingkey...Account18B61497FD290B02BB0751F44381CADA1657C2B3AA6194A00D9BC9A85FAD3B04doesn't exist, creating it and funding it with 10000 coinsAptos is now set up for account 18B61497FD290B02BB0751F44381CADA1657C2B3AA6194A00D9BC9A85FAD3B04! Run `aptos help` for more information about commands{ "Result": "Success"}
Примеры учетных записей
Пополнение учетной записи с помощью faucet
Вы можете пополнить учетную запись на faucet через CLI, используя либо учетную запись, либо профиль:
$aptosaccountfund--accountB9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB{"Result":"Added 10000 coins to account B9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB"}
$aptosaccountfund--accountdefault{"Result":"Added 10000 coins to account B9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB"}
Просмотр баланса учетной записи и информации о переводах
Вы можете просматривать баланс и информацию о переводах (пополнение и снятие средств) с помощью:
$aptosaccountlist--querybalance--account0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb
Приведенная выше команда выведет на ваш терминал следующую информацию:
{"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"}}}}]}
Вызов ресурсов в учетной записи
Вы можете вызвать список ресурсов в учетной записи из командной строки. Например, смотрите ниже, как вызвать список ресурсов в учетной записи, которую вы только что создали выше:
$aptosaccountlist--queryresources--account0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb
Приведенная выше команда выдаст на ваш терминал следующую информацию о списке ресурсов:
{"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"}]}
Вы можете дополнительно указать профиль по умолчанию из конфигурации, в которой не указана учетная запись.
$aptosaccountlist{"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"}]}
Кроме того, любое место, где есть учетная запись, может использовать имя профиля:
$aptosaccountlist--queryresources--accountsuperuser{"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"}]}
Вызов модулей в учетной записи
Вы можете вызывать различные типы запросов для просмотра различных элементов под учетной записью. В настоящее время поддерживаются "ресурсы" и "модули", но в будущем появятся и другие типы запросов. Например, для получения модулей:
$aptosaccountlist--querymodules{"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 также является простым кошельком и может переводить монеты между учетными записями.
$aptosaccounttransfer--accountsuperuser--amount100{"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
.
$aptoskeygenerate--key-typeed25519--output-fileoutput.key{"Result":{"PrivateKey Path":"output.key","PublicKey Path":"output.key.pub"}}
Генерация конфигурации Peer
Чтобы разрешить другим подключаться к вашей ноде, вам необходимо создать конфигурациюpeer
. Ниже показано, как можно использоватьaptos
CLI для создания конфигурации peer и записи ее в файлpeer_config.yaml
.
$aptoskeyextract-peer--output-filepeer_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.
Адреса с именами могут быть либо адресом учетной записи, либо именем профиля.
$aptosmovecompile--package-diraptos-move/move-examples/hello_blockchain/--named-addressesHelloBlockchain=superuser
Приведенная выше команда выведет на терминал следующий результат:
{"Result":["742854F7DCA56EA6309B51E8CEBB830B12623F9C9D76C72C3242E4CAD353DEDC::Message"]}
Сборка и модульное тестирование Move
aptos
CLI также можно использовать для сборки и локального запуска модульных тестов. В этом примере мы будем использоватьHelloBlockchain
вmove-examples.
$aptosmovetest--package-diraptos-move/move-examples/hello_blockchain/--named-addressesHelloBlockchain=superuser
Приведенная выше команда выведет на терминал следующий результат:
INCLUDINGDEPENDENCYAptosFrameworkINCLUDINGDEPENDENCYAptosStdlibINCLUDINGDEPENDENCYMoveStdlibBUILDINGExamplesRunningMoveunittests[PASS]0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc::MessageTests::sender_can_set_message[PASS]0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc::Message::sender_can_set_messageTestresult:OK.Totaltests:2;passed:2;failed:0{"Result":"Success"}
Доказательство MOVE
С помощьюaptos
CLI можно запуститьMove Prover, который является инструментом формальной верификации для языка Move. Приведенный ниже пример подтверждает пакетhello_prover
вmove-examples.
aptosmoveprove--package-diraptos-move/move-examples/hello_prover/
Приведенная выше команда выведет на терминал следующий результат:
SUCCESSproving1modulesfrompackage`hello_prover`in1.649s{"Result":"Success"}
Debug и вывод Stacktrace
В этом примере мы будем использоватьDebugDemo
вdebug-move-example.
Во-первых, вам нужно включить Move nursery вфайл Move toml.
Теперь вы можете использоватьDebug::print
иDebug::print_stack_trace
в вашем файлеDebugDemo Move.
Вы можете выполнить следующую команду:
$aptosmovetest--package-dircrates/aptos/debug-move-example
Команда выдаст следующий результат:
Running Move unit tests[debug] 0000000000000000000000000000000000000000000000000000000000000001Call 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] 0000000000000000000000000000000000000000000000000000000000000001Operand Stack:
Публикация пакета Move с названным адресом
В этом примере мы будем использоватьHelloBlockchain
вmove-examples.
Опубликуйте пакет с адресом вашей учетной записи, установленным дляHelloBlockchain
.
Здесь необходимо изменить 8946741e5c907c43c9e042b3739993f32904723f8e2d1491564d38959b59ac71 на адрес вашей учетной записи.
$aptosmovepublish--package-diraptos-move/move-examples/hello_blockchain/--named-addressesHelloBlockchain=8946741e5c907c43c9e042b3739993f32904723f8e2d1491564d38959b59ac71
Вы можете дополнительно использовать названные профили для адресов. Первый держательdefault
$aptosmovepublish--package-diraptos-move/move-examples/hello_blockchain/--named-addressesHelloBlockchain=default
Запуск функции Move
Теперь, когда вы опубликовали вышеуказанную функцию, вы можете запустить ее.
Аргументы должны иметь тип с двоеточием для разделения. В этом примере мы хотим, чтобы входные данные были разобраны как строка, поэтому мы поместилиstring:Hello
!
$aptosmoverun--function-id0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb::message::set_message--argsstring: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"}}
Кроме того, профили могут заменять адреса в идентификаторе функции.
$aptosmoverun--function-iddefault::message::set_message--argsstring: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 локальной одной нодой в тестнете.
$aptosnoderun-local-testnet--with-faucetCompletedgeneratingconfiguration:Logfile:"/Users/greg/.aptos/testnet/validator.log"Testdir:"/Users/greg/.aptos/testnet"Aptosrootkeypath:"/Users/greg/.aptos/testnet/mint.key"Waypoint:0:d302c6b10e0fa68bfec9cdb383f24ef1189d8850d50b832365eea21ae52d8101ChainId:TESTINGRESTAPIendpoint:0.0.0.0:8080FullNodenetwork:/ip4/0.0.0.0/tcp/6181Aptosisrunning,pressctrl-ctoexit
Это обеспечит стабильное состояние, если нода будет выключена, она начнет работу с предыдущего состояния. Если вы хотите перезапустить сеть изgenesis
, вы можете добавить флаг--force-restart
.
$aptosnoderun-local-testnet--with-faucet--force-restartAreyousureyouwanttodeletetheexistingchain?[yes/no]>yesCompletedgeneratingconfiguration:Logfile:"/Users/greg/.aptos/testnet/validator.log"Testdir:"/Users/greg/.aptos/testnet"Aptosrootkeypath:"/Users/greg/.aptos/testnet/mint.key"Waypoint:0:649efc34c813d0db8db6fa5b1ffc9cc62f726bb5168e7f4b8730bb155d6213eaChainId:TESTINGRESTAPIendpoint:0.0.0.0:8080FullNodenetwork:/ip4/0.0.0.0/tcp/6181Aptosisrunning,pressctrl-ctoexit
Церемонии 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.gitcd aptos-coregit checkout --track origin/testnet./scripts/dev_setup.shsource ~/.cargo/env
ФайлLayout
Файл Layout содержит:
root_key
: открытый ключ Ed25519 для управления AptosCoin.users
: набор участниковchain_id
:ChainId
или уникальное целое число, которое отличает данное развертывание от других сетей Aptos
Пример:
root_key: "0xca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575"users: - alice - bobchain_id: 8
Создание Aptos фреймворк
Из репозитория Aptos-core создайте фреймворк и поместите его в папку:
cargo run --package frameworkmkdir aptos-framework-releasecp 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: ccd49f3ea764365ac21e99f029ca63a9b0fbfab1c8d8d5482900e4fa32c5448aconsensus_key: "0xa05b8f41057ac72f9ca99f5e3b1b787930f03ba5e448661f2a1fac98371775ee"account_key: "0x3d15ab64c8b14c9aab95287fd0eb894aad0b4bd929a5581bcc8225b5688f053b"network_key: "0x43ce1a4ac031b98bb1ee4a5cd72a4cca0fd72933d64b22cef4f1a61895c2e544"validator_host: host: bobs_host port: 6180full_node_host: host: bobs_host port: 6182stake_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)
For further actions, you may consider blocking this person and/orreporting abuse