DEV Community

EgorMajj
EgorMajj

Posted on

Концепции Aleo | Аккаунты

Аккаунт Aleo состоит из закрытого ключа аккаунта, ключа просмотра аккаунта и адреса аккаунта.

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

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

Создайте новый аккаунт Aleo здесь.

Закрытый ключ аккаунта

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

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

Формат закрытого ключа

APrivateKey1b47dMA8f9GfXPsW9s16qWfiYYmWGAAcorK9RkaVpBeFA
Enter fullscreen mode Exit fullscreen mode

Закрытый ключ аккаунта имеет формат строки Base58, состоящей из 58 символов. Закрытый ключ аккаунта кодируется префиксом закрытого ключа, который читается как APrivateKey1, что указывает на то, что это закрытый ключ и его не следует передавать другим пользователям.

Ключ подтверждения аккаунта

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

Ключ подтверждения аккаунта состоит из:

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

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

Формат ключа для подтверждения

AProvingKey1z3f8dMA8f9GffPsP2s85qWfiYYmBWcccorK9RkaVpAAFB
Enter fullscreen mode Exit fullscreen mode

Ключ подтверждения аккаунта оформляется в виде строки Base58, состоящей из 58 символов. Ключ подтверждения аккаунта кодируется префиксом ключа подтверждения, который читается как AProvingKey1, что указывает на то, что это ключ подтверждения и он должен быть предоставлен только уполномоченным сторонам.

Ключ доступа аккаунта

Ключ доступа к аккаунту Aleo является производным от закрытого ключа аккаунта и позволяет пользователям расшифровывать свои записи из глобального реестра. Поскольку ключи доступа к аккаунту имеют доступ к каждой записи в аккаунте пользователя, этот ключ может быть использован сторонними аудиторами для проверки полной истории аккаунта.

Ключ доступа к аккаунту состоит из:

  • секретный ключ для схемы шифрования аккаунта.

Формат ключа доступа

AViewKey1cVP45x3E1TxJFgiJqawy7w5WQDsUXWTbpWAXSXB1sDw8
Enter fullscreen mode Exit fullscreen mode

Ключ доступа аккаунта форматируется как строка Base58, состоящая из 56 символов. Ключ доступа аккаунта кодируется с префиксом ключа доступа, который читается как AViewKey1, что указывает на то, что это ключ доступа к аккаунту, и он должен быть предоставлен только уполномоченным лицам.

Адрес аккаунта

Адрес аккаунта Aleo - это уникальный идентификатор, который позволяет пользователям передавать друг другу активы и записывать данные в транзакциях.

Адрес аккаунта состоит из:

  • открытый ключ для схемы шифрования аккаунта.

Формат адреса

aleo1y90yg3yzs4g7q25f9nn8khuu00m8ysynxmcw8aca2d0phdx8dgpq4vw348
Enter fullscreen mode Exit fullscreen mode

Адрес аккаунта форматируется как строка Bech32, состоящая из 63 символов. Адрес аккаунта кодируется с префиксом адреса, который читается как aleo1.

Дополнительные сведения

Префиксы аккаунтов

Закрытый ключ аккаунта

  • тип - байт
  • читаемый человеком префикс - APrivateKey1
  • префикс байта - [ 127, 134, 189, 116, 210, 221, 210, 137, 144 ]

Ключ подтверждения аккаунта

  • тип - байт
  • читаемый человеком префикс - AProvingKey1
  • префикс байта - [ 109, 249, 98, 224, 36, 15, 213, 187, 79, 190 ]

Ключ доступа аккаунта

  • тип - байт
  • читаемый человеком префикс - AViewKey1
  • префикс байта - [ 14, 138, 223, 204, 247, 224, 122 ]

Адрес аккаунта

  • тип - строка
  • читаемый человеком префикс - aleo1
  • префикс байта - aleo1

Автономные аккаунты

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

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

Выводы обязательств по аккаунту

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

Создание аккаунта

Учитывая глобальные установленные параметры и подпрограммы Aleo.

Генерация закрытого ключа

1.Выбор 32-байтовой seed рандомно
2.Постройте компоненты закрытого ключа

  • sk_sig = Blake2s(seed, 0)
  • sk_prf = Blake2s(seed, 1)
  • r_pk = Blake2s(seed, counter)

3.private_key = (seed, sk_sig, sk_prf, r_pk)

counter - это значение u16, которое итерируется до тех пор, пока из private_key не будет получен правильный view_key

Генерирование ключа доступа
1.Construct pk_sig = AccountSignature.GeneratePublicKey(ppaccount_sig, sk_sig)
2.view_key = AccountCommitment.Commit(ppaccount_cm, (pk_sig, sk_prf), r_pk)

Генерация адреса

  1. address = AccountEncryption.GeneratePublicKey(ppaccount_enc, view_key)

Диаграмма аккаунта

graph TD
    A["Seed (32 Bytes)"] 
    A --> |"Blake2s(Seed, 0)"| B(sk_sig)
    A --> |"Blake2s(Seed, 1)"| C(sk_prf)
    A --> |"Blake2s(Seed, counter)"| D(r_pk)

    B --> E(Account Private Key)
    C --> E(Account Private Key)
    D --> E(Account Private Key)

    E --> F(Account View Key) 
    F --> G(Account Address) 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)