Учётные записи (аккаунты)

Учетная запись представляет собой ресурс в Aptos Blockchain, который может отправлять транзакции. Каждая учетная запись идентифицируется конкретным 32-байтовым адресом учетной записи и является контейнером для модулей и ресурсов языка программирования Move.

Введение

Состояние каждой учетной записи включает в себя код и данные:

  • Код: модули Move содержат код (объявления типов и процедур), но не содержат данных. Процедуры модуля кодируют правила обновления глобального состояния блокчейна.

  • Данные: ресурсы Move содержат данные, но не код. Каждое значение ресурса имеет тип, объявленный в модуле, опубликованном в распределенной базе данных блокчейна.

Учетная запись может содержать произвольное количество ресурсов Move и модулей Move.

Первоначальная настройка учетной записи

Учетная запись Aptos содержит ссылку на адрес учетной записи, которая представляет собой 32-байтовое значение. Адрес учетной записи является производным от первоначального публичного ключа (ключей) проверки для этой учетной записи. В частности, адрес учетной записи представляет собой 32-байтовый криптографический хэш SHA-3 256 начального публичного ключа (ключей) проверки, объединенный с байтом идентификатора схемы подписи. Блокчейн Aptos поддерживает две схемы подписи: Ed25519 и MultiEd25519 (для транзакций с несколькими подписями). Приватный ключ учетной записи необходим для подписания транзакций.

Каждая учетная запись также хранит sequence_number, который представляет собой порядковый номер следующей транзакции для предотвращения атак повторными транзакциями. Данный порядковый номер инициализируется значением 0 во время создания учетной записи.

Ключи аутентификации

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

Аутентификация с одной подписью

Чтобы сгенерировать ключ аутентификации и адрес учетной записи:

  1. Создайте пару ключей: создайте новую пару ключей (pubkey_A, privkey_A). Aptos Blockchain использует схему PureEdDSA по кривой Ed25519, как определено в RFC 8032.

  2. Получите 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 аналогично созданию ключа с одной подписью:

  1. Создайте пары ключей: создайте N ed25519 публичных ключей p_1, ..., p_n.

  2. Получите 32-байтовый ключ аутентификации: вычислите auth_key = sha3-256(p_1 | … | p_n | K | 0x01). Извлеките адрес и префикс ключа аутентификации, как описано выше. K представляет требование K-of-N, необходимое для аутентификации транзакции. 0x01 — это 1-байтовый идентификатор схемы подписи, где 0x01 означает мультиподпись.

Ресурсы учетной записи (аккаунта)

Каждая учетная запись в Aptos может хранить данные, которые она делает в ресурсах. Исходным ресурсом являются сами данные учетной записи (ключ аутентификации и порядковый номер). Дополнительные ресурсы, такие как валюта или NFT, могут быть добавлены после создания учетной записи. Для создания учетных записей тестнету Aptos требуется публичный ключ учетной записи и монеты Coin\<TestCoin> для добавления к этой учетной записи, что приведет к созданию новой учетной записи с этими двумя ресурсами.

Last updated