Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

EgorMajj
EgorMajj

Posted on

     

Руководство по использованию Aptos CLI

Утилита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
Enter fullscreen modeExit fullscreen mode

Также справочник доступен по конкретным командам. Например, введитеaptos move --help, чтобы получить справку по конкретной команде.

$aptos-move0.2.1CLItoolforperformingMovetasksUSAGE:aptosmove<SUBCOMMAND>OPTIONS:-h,--helpPrinthelpinformation-V,--versionPrintversioninformationSUBCOMMANDS:compileCompilesapackageandreturnsthe[`ModuleId`]shelpPrintthismessageorthehelpofthegivensubcommand(s)initCreatesanewMovepackageatthegivenlocationpublishPublishesthemodulesinaMovepackagerunRunaMovefunctiontestRunMoveunittestsagainstapackagepath
Enter fullscreen modeExit fullscreen mode

Также доступен справочник по подкомандам. Например, введите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
Enter fullscreen modeExit fullscreen mode

Информация о 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)"}}
Enter fullscreen modeExit fullscreen mode

Примеры настроек

Настройка глобальной конфигурации

С помощью этой команды можно задать параметры глобальной конфигурации для CLI. Глобальная конфигурация находится в~/.aptos/global_config.yaml. На данный момент единственным полем, которое можно настроить, является--config-type, которое позволяет вам установить, где будет установлена конфигурация профиля. По умолчанию это workspace, что означает, что текущий каталог (./.aptos/config.yaml), в котором запущен CLI, будет содержать конфигурацию. Если установлено значениеglobal, то будет использоваться глобальное расположение папки (~/.aptos/config.yaml).

$aptosconfigset-global-config--config-typeglobal{"Result":"Success"}
Enter fullscreen modeExit fullscreen mode

Вы также можете показать глобальную конфигурацию с помощью командыshow-global-config.

$aptosconfigshow-global-config{"Result":{"config_type":"Global"}}
Enter fullscreen modeExit fullscreen mode

Настройка выполнения 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
Enter fullscreen modeExit fullscreen mode

Настройка локальной конфигурации и создание учетной записи

Будет создана локальная папка.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"}
Enter fullscreen modeExit fullscreen mode

Шаг 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"}
Enter fullscreen modeExit fullscreen mode

Примеры учетных записей

Пополнение учетной записи с помощью faucet

Вы можете пополнить учетную запись на faucet через CLI, используя либо учетную запись, либо профиль:

$aptosaccountfund--accountB9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB{"Result":"Added 10000 coins to account B9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB"}
Enter fullscreen modeExit fullscreen mode
$aptosaccountfund--accountdefault{"Result":"Added 10000 coins to account B9BD2CFA58CA29BCE1D7ADD25FCE5C62220604CD0236FE3F90D9DE91ED9FB8CB"}
Enter fullscreen modeExit fullscreen mode

Просмотр баланса учетной записи и информации о переводах

Вы можете просматривать баланс и информацию о переводах (пополнение и снятие средств) с помощью:

$aptosaccountlist--querybalance--account0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb
Enter fullscreen modeExit fullscreen mode

Приведенная выше команда выведет на ваш терминал следующую информацию:

{"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"}}}}]}
Enter fullscreen modeExit fullscreen mode

Вызов ресурсов в учетной записи

Вы можете вызвать список ресурсов в учетной записи из командной строки. Например, смотрите ниже, как вызвать список ресурсов в учетной записи, которую вы только что создали выше:

$aptosaccountlist--queryresources--account0xb9bd2cfa58ca29bce1d7add25fce5c62220604cd0236fe3f90d9de91ed9fb8cb
Enter fullscreen modeExit fullscreen mode

Приведенная выше команда выдаст на ваш терминал следующую информацию о списке ресурсов:

{"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"}]}
Enter fullscreen modeExit fullscreen mode

Вы можете дополнительно указать профиль по умолчанию из конфигурации, в которой не указана учетная запись.

$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"}]}
Enter fullscreen modeExit fullscreen mode

Кроме того, любое место, где есть учетная запись, может использовать имя профиля:

$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"}]}
Enter fullscreen modeExit fullscreen mode

Вызов модулей в учетной записи

Вы можете вызывать различные типы запросов для просмотра различных элементов под учетной записью. В настоящее время поддерживаются "ресурсы" и "модули", но в будущем появятся и другие типы запросов. Например, для получения модулей:

$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>"}]}]}}]}
Enter fullscreen modeExit fullscreen mode

Перевод 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"}}
Enter fullscreen modeExit fullscreen mode

Пример с ключами

Генерирование ключа

Чтобы разрешить генерацию закрытых ключей, можно использовать командуaptos key generate. Вы можете генерировать ключиx25519 илиed25519.

$aptoskeygenerate--key-typeed25519--output-fileoutput.key{"Result":{"PrivateKey Path":"output.key","PublicKey Path":"output.key.pub"}}
Enter fullscreen modeExit fullscreen mode

Генерация конфигурации Peer

Чтобы разрешить другим подключаться к вашей ноде, вам необходимо создать конфигурациюpeer. Ниже показано, как можно использоватьaptos CLI для создания конфигурации peer и записи ее в файлpeer_config.yaml.

$aptoskeyextract-peer--output-filepeer_config.yaml
Enter fullscreen modeExit fullscreen mode

Приведенная выше команда выведет на терминал следующий результат:

{"Result":{"8cfb85603080b13013b57e2e80887c695cfecd7ad8217d1cac22fa6f3b0b5752":{"addresses":[],"keys":["0x8cfb85603080b13013b57e2e80887c695cfecd7ad8217d1cac22fa6f3b0b5752"],"role":"Upstream"}}}
Enter fullscreen modeExit fullscreen mode

Файлpeer_config.yaml будет создан в вашей текущей рабочей папке, с содержимым, как показано в примере ниже:

---8cfb85603080b13013b57e2e80887c695cfecd7ad8217d1cac22fa6f3b0b5752:addresses:[]keys:-"0x8cfb85603080b13013b57e2e80887c695cfecd7ad8217d1cac22fa6f3b0b5752"role:Upstream
Enter fullscreen modeExit fullscreen mode

Примечание: В строке адреса необходимо заполнить свой адрес.

Примеры MOVE

Сборка Move

Для локальной сборки пакета Move можно использоватьaptos CLI. В приведенном ниже примере используется блокчейнHelloBlockchain вmove-examples.

Адреса с именами могут быть либо адресом учетной записи, либо именем профиля.

$aptosmovecompile--package-diraptos-move/move-examples/hello_blockchain/--named-addressesHelloBlockchain=superuser
Enter fullscreen modeExit fullscreen mode

Приведенная выше команда выведет на терминал следующий результат:

{"Result":["742854F7DCA56EA6309B51E8CEBB830B12623F9C9D76C72C3242E4CAD353DEDC::Message"]}
Enter fullscreen modeExit fullscreen mode

Сборка и модульное тестирование Move

aptos CLI также можно использовать для сборки и локального запуска модульных тестов. В этом примере мы будем использоватьHelloBlockchain вmove-examples.

$aptosmovetest--package-diraptos-move/move-examples/hello_blockchain/--named-addressesHelloBlockchain=superuser
Enter fullscreen modeExit fullscreen mode

Приведенная выше команда выведет на терминал следующий результат:

INCLUDINGDEPENDENCYAptosFrameworkINCLUDINGDEPENDENCYAptosStdlibINCLUDINGDEPENDENCYMoveStdlibBUILDINGExamplesRunningMoveunittests[PASS]0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc::MessageTests::sender_can_set_message[PASS]0x742854f7dca56ea6309b51e8cebb830b12623f9c9d76c72c3242e4cad353dedc::Message::sender_can_set_messageTestresult:OK.Totaltests:2;passed:2;failed:0{"Result":"Success"}
Enter fullscreen modeExit fullscreen mode

Доказательство MOVE

С помощьюaptos CLI можно запуститьMove Prover, который является инструментом формальной верификации для языка Move. Приведенный ниже пример подтверждает пакетhello_prover вmove-examples.

aptosmoveprove--package-diraptos-move/move-examples/hello_prover/
Enter fullscreen modeExit fullscreen mode

Приведенная выше команда выведет на терминал следующий результат:

SUCCESSproving1modulesfrompackage`hello_prover`in1.649s{"Result":"Success"}
Enter fullscreen modeExit fullscreen mode

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
Enter fullscreen modeExit fullscreen mode

Команда выдаст следующий результат:

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:
Enter fullscreen modeExit fullscreen mode

Публикация пакета Move с названным адресом

В этом примере мы будем использоватьHelloBlockchain вmove-examples.

Опубликуйте пакет с адресом вашей учетной записи, установленным дляHelloBlockchain.

Здесь необходимо изменить 8946741e5c907c43c9e042b3739993f32904723f8e2d1491564d38959b59ac71 на адрес вашей учетной записи.

$aptosmovepublish--package-diraptos-move/move-examples/hello_blockchain/--named-addressesHelloBlockchain=8946741e5c907c43c9e042b3739993f32904723f8e2d1491564d38959b59ac71
Enter fullscreen modeExit fullscreen mode

Вы можете дополнительно использовать названные профили для адресов. Первый держательdefault

$aptosmovepublish--package-diraptos-move/move-examples/hello_blockchain/--named-addressesHelloBlockchain=default
Enter fullscreen modeExit fullscreen mode

Запуск функции 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"}}
Enter fullscreen modeExit fullscreen mode

Кроме того, профили могут заменять адреса в идентификаторе функции.

$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"}}
Enter fullscreen modeExit fullscreen mode

Примеры команд Ноды

Запуск локальной тестовой сети

Вы можете запустить локальный тестнет из 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
Enter fullscreen modeExit fullscreen mode

Это обеспечит стабильное состояние, если нода будет выключена, она начнет работу с предыдущего состояния. Если вы хотите перезапустить сеть из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
Enter fullscreen modeExit fullscreen mode

Церемонии 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
Enter fullscreen modeExit fullscreen mode

ФайлLayout

Файл Layout содержит:

root_key: открытый ключ Ed25519 для управления AptosCoin.
users: набор участников
chain_id:ChainId или уникальное целое число, которое отличает данное развертывание от других сетей Aptos

Пример:

root_key: "0xca3579457555c80fc7bb39964eb298c414fd60f81a2f8eedb0244ec07a26e575"users:  - alice  - bobchain_id: 8
Enter fullscreen modeExit fullscreen mode

Создание Aptos фреймворк

Из репозитория Aptos-core создайте фреймворк и поместите его в папку:

cargo run --package frameworkmkdir aptos-framework-releasecp aptos-framework/releases/artifacts/current/build/**/bytecode_modules/* aptos-framework-release
Enter fullscreen modeExit fullscreen mode

Фреймворк будет храниться в каталоге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
Enter fullscreen modeExit fullscreen mode

Чтобы создать его с помощьюaptos CLI:

1.Сгенерируйте ключи валидатора:

cargo run --package aptos -- genesis generate-keys --output-dir bobs
Enter fullscreen modeExit fullscreen mode

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 .
Enter fullscreen modeExit fullscreen mode

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
Enter fullscreen modeExit fullscreen mode

Запуск aptos-node

После генерацииgenesis.blob и путевой точки поместите их в каталог конфигурации вашего валидатора и fullnode и запустите ваш валидатор и fullnode.

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Discord: egormajj#0340
  • Joined

More fromEgorMajj

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp