Перейти к содержимому

Аккаунты

Аккаунт на блокчейне Aptos представляет контроль доступа к набору активов, включая валюту в сети и NFT. В Aptos эти активы представлены примитивом языка Move, известным как ресурс, который подчеркивает как контроль доступа, так и дефицит.

Каждый аккаунт на блокчейне Aptos идентифицируется 32-байтовым адресом аккаунта. Вы можете использовать Aptos Name Service на www.aptosnames.com для защиты доменов .apt для ключевых аккаунтов, чтобы сделать их запоминающимися и уникальными.

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

Явные аккаунты позволяют функции первого класса, которые недоступны в других сетях, такие как:

  • Ротация ключа аутентификации. Ключ аутентификации аккаунта может быть изменен для управления через другой приватный ключ. Это похоже на смену паролей в мире web2.
  • Нативная поддержка мультиподписи. Аккаунты на Aptos поддерживают мультиподпись k-of-n, используя схемы подписи Ed25519 и Secp256k1 ECDSA при построении ключа аутентификации.

Существует три типа аккаунтов на Aptos:

  • Стандартный аккаунт - Это типичный аккаунт, соответствующий адресу с соответствующей парой открытых/закрытых ключей.
  • Ресурсный аккаунт - Автономный аккаунт без соответствующего приватного ключа, используемый разработчиками для хранения ресурсов или публикации модулей в сети.
  • Объект - Сложный набор ресурсов, хранящихся в одном адресе, представляющих одну сущность.
Alice: 0xeeff357ea5c1a4e7bc11b2b17ff2dc2dcca69750bfef1e1ebcaccf8c8018175b
Bob: 0x19aadeca9388e009d136245b9a67423f3eee242b03142849eb4f81a4a409e59c

В настоящее время Aptos поддерживает только единый унифицированный идентификатор для аккаунта. Аккаунты на Aptos универсально представлены как 32-байтовая шестнадцатеричная строка. Шестнадцатеричная строка короче 32 байтов также действительна; в таких сценариях шестнадцатеричная строка может быть дополнена ведущими нулями, например, 0x1 => 0x0000000000000...01. Хотя стандарты Aptos указывают, что ведущие нули могут быть удалены из адреса, большинство приложений пытаются избегать такого унаследованного поведения и поддерживают только удаление 0 для специальных адресов в диапазоне от 0x0 до 0xa.

Когда пользователь запрашивает создание аккаунта, например, используя Aptos SDK, выполняются следующие шаги:

  • Выбор схемы аутентификации для управления аккаунтом пользователя, например, Ed25519 или Secp256k1 ECDSA.
  • Генерация новой пары приватный ключ, открытый ключ.
  • Объединение открытого ключа со схемой аутентификации открытого ключа для генерации 32-байтового ключа аутентификации и адреса аккаунта.

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

Номер последовательности аккаунта для аккаунта указывает количество транзакций, которые были отправлены и зафиксированы в сети с этого аккаунта. Он служит защитой от атак повторного воспроизведения.

Каждая транзакция, отправленная с аккаунта, должна содержать текущий номер последовательности аккаунта. После выполнения транзакции номер последовательности аккаунта увеличивается на 1. Аккаунт может иметь максимум 2^64 - 1 транзакций за свою жизнь.

Состояние аккаунта на Aptos состоит из:

  • Модуль кода: Move код, опубликованный аккаунтом.
  • Ресурсы: Структурированные данные, хранящиеся под этим аккаунтом.

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

Когда мы создали аккаунт, мы вывели адрес аккаунта из первоначального ключа аутентификации. Ключ аутентификации - это 32-байтовое значение SHA3-256, выведенное из открытого ключа аккаунта и схемы подписи, которая идентифицирует, к какому типу подписи принадлежит открытый ключ.

Aptos поддерживает две схемы подписи:

  • Ed25519: Используется для одиночных подписей. Требует одну подпись, соответствующую открытому ключу.
  • MultiEd25519: Используется для подписей k-of-n. Требует k подписей из n открытых ключей.

С ротацией ключей вы можете повернуть приватный ключ аккаунта, не меняя его адрес на блокчейне. Это иногда необходимо для безопасности аккаунта, если вы подозреваете, что ваш приватный ключ был скомпрометирован.

  1. Сгенерировать новую пару открытый/приватный ключ
  2. Вывести новый ключ аутентификации из нового открытого ключа
  3. Отправить транзакцию ротации ключа, подписанную старым приватным ключом
  4. Новый ключ аутентификации заменяет старый в аккаунте
  5. Будущие транзакции должны быть подписаны новым приватным ключом