Основные концепции в блокчейне Aleo

Illy’s Web3 blog
4 min readJan 25, 2024

--

В этой статье мы рассмотрим 7 наиболее важных концепций в блокчейне Aleo.

1. Аккаунты

Аккаунт состоит из:

Приватного ключа

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

Формат приватного ключа следующий: APrivateKey1zkp4X9ApjTb7Rv8EABfZRugXBhbPzCL245GyNtYJP5GYY2k

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

Публичного ключа

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

Формат публичного ключа выглядит так: AViewKey1nKB4qr9b5gK8wQvmM5sTPEuBwshtDdkCZB1SPWppAG9Y

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

Адреса

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

Формат адреса выглядит так: aleo1dg722m22fzpz6xjdrvl9tzu5t68zmypj5p74khlqcac0gvednygqxaax0j

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

2. Программы

Программа является фундаментальной структурой данных для представления логики и состояния приложения.

Данные программы:

Идентификатор:

Каждая программа имеет уникальный ID, который хранится в манифесте программы program.json. Этот ID используется для указания программы, которая была запущена при создании или использовании данных.

Ввод:

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

Состояние программы:

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

Вывод:

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

Характеристики:

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

3. Записи

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

Шифрование записи:

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

4. Транзакции

Транзакция является фундаментальной структурой данных для публикации перехода состояния в реестре.

Типы транзакций:

Транзакция развертывания:

Транзакция развертывания публикует программу Aleo в сети.

Транзакция выполнения:

Транзакция выполнения представляет вызов программы Aleo.

Транзакция комиссии:

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

5. Комиссия за транзакции

Комиссия за транзакцию — это плата, необходимая для обработки транзакции в сети Aleo. В настоящее время существует два типа комиссий за транзакции, соответствующих каждому типу транзакции: развертывание и выполнение.

Типы комиссий за транзакции:

Комиссия за транзакцию развертывания:

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

Комиссия за транзакцию выполнения:

Комиссия, взимаемая при выполнении приложения на блокчейне Aleo. Минимальная комиссия за транзакцию выполнения может быть увеличена для предотвращения спама; на данный момент она стабильно находится в пределах от 3 до 5 милликредитов за базовый перевод.

6. Переходы

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

Вводная запись:

Вводная запись представляет собой кортеж, состоящий из серийного номера и метки. Поскольку серийный номер раскрывается в реестре, это публично объявляет о записи, которая тратится. Серийные номера публикуются в реестре для объявления о том, что ранее неизрасходованные записи теперь были потрачены. У каждой записи есть связанная с ней метка, которая используется для отслеживания записей, которые могут быть потрачены пользователем.

Выводная запись:

Выводная запись состоит из обязательства записи, контрольной суммы и зашифрованной записи. Обязательство записи вычисляется через функцию Pedersen.Commit. Шифрование записи вычисляется через функцию SymmEnc.Eval, а контрольная сумма, используемая для проверки целостности обязательства записи, вычисляется через функцию record_commitment.

7. Блоки

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

Компоненты блока:

  • Хэш блока
  • Хэш предыдущего блока
  • Заголовок

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

  • Транзакции

Транзакции представляют собой список всех транзакций, включенных в указанный блок.

  • Утверждение
  • Коинбейс
  • Сигнатура

--

--

No responses yet