Учётные записи (аккаунты)
Last updated
Last updated
Учетная запись представляет собой ресурс в Aptos Blockchain, который может отправлять транзакции. Каждая учетная запись идентифицируется конкретным 32-байтовым адресом учетной записи и является контейнером для модулей и ресурсов языка программирования Move.
Состояние каждой учетной записи включает в себя код и данные:
Код: модули Move содержат код (объявления типов и процедур), но не содержат данных. Процедуры модуля кодируют правила обновления глобального состояния блокчейна.
Данные: ресурсы Move содержат данные, но не код. Каждое значение ресурса имеет тип, объявленный в модуле, опубликованном в распределенной базе данных блокчейна.
Учетная запись может содержать произвольное количество ресурсов Move и модулей Move.
Учетная запись Aptos содержит ссылку на адрес учетной записи, которая представляет собой 32-байтовое значение. Адрес учетной записи является производным от первоначального публичного ключа (ключей) проверки для этой учетной записи. В частности, адрес учетной записи представляет собой 32-байтовый криптографический хэш SHA-3 256 начального публичного ключа (ключей) проверки, объединенный с байтом идентификатора схемы подписи. Блокчейн Aptos поддерживает две схемы подписи: и MultiEd25519 (для транзакций с несколькими подписями). Приватный ключ учетной записи необходим для подписания транзакций.
Каждая учетная запись также хранит sequence_number
, который представляет собой порядковый номер следующей транзакции для предотвращения атак повторными транзакциями. Данный порядковый номер инициализируется значением 0
во время создания учетной записи.
Каждая учетная запись хранит ключ аутентификации. Этот ключ аутентификации позволяет владельцам учетных записей менять свои приватные ключи, связанные с учетной записью, без изменения адреса, на котором размещена их учетная запись. Во время ротации ключ аутентификации обновляется на основе вновь сгенерированной пары (пар) приватных и публичных ключей.
Чтобы сгенерировать ключ аутентификации и адрес учетной записи:
Создайте пару ключей: создайте новую пару ключей (pubkey_A
, privkey_A
). Aptos Blockchain использует схему PureEdDSA по кривой Ed25519, как определено в RFC 8032.
Получите 32-байтовый ключ аутентификации: получите 32-байтовый ключ аутентификацииauth_key = sha3-256(pubkey_A | 0x00)
, где | обозначает конкатенацию. 0x00
это 1-байтовый идентификатор схемы подписи, где 0x00 означает одиночную подпись. Первые 16 байт auth_key
— это «префикс ключа аутентификации».
Для ключа аутентификации учетной записи может потребоваться либо одна подпись, либо несколько подписей ("multisig"). При мультиподписной аутентификации K-of-N для учетной записи имеется N количество подписывающих лиц, и для аутентификации транзакции необходимо использовать не менее K из этих N подписей.
Создание ключа аутентификации с мультиподписью K-of-N аналогично созданию ключа с одной подписью:
Создайте пары ключей: создайте N ed25519 публичных ключей p_1
, ..., p_n
.
Получите 32-байтовый ключ аутентификации: вычислите auth_key = sha3-256(p_1 | … | p_n | K | 0x01)
. Извлеките адрес и префикс ключа аутентификации, как описано выше. K
представляет требование K-of-N, необходимое для аутентификации транзакции. 0x01
— это 1-байтовый идентификатор схемы подписи, где 0x01
означает мультиподпись.
Каждая учетная запись в Aptos может хранить данные, которые она делает в ресурсах. Исходным ресурсом являются сами данные учетной записи (ключ аутентификации и порядковый номер). Дополнительные ресурсы, такие как валюта или NFT, могут быть добавлены после создания учетной записи. Для создания учетных записей тестнету Aptos требуется публичный ключ учетной записи и монеты Coin\<TestCoin> для добавления к этой учетной записи, что приведет к созданию новой учетной записи с этими двумя ресурсами.