Основные концепции в блокчейне Aleo
В этой статье мы рассмотрим 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 во времени.
Компоненты блока:
- Хэш блока
- Хэш предыдущего блока
- Заголовок
Заголовок блока содержит компоненты, которые резюмируют состояние указанного блока, а также состояние реестра на этот момент в истории. Для более подробной информации см. компоненты заголовка блока.
- Транзакции
Транзакции представляют собой список всех транзакций, включенных в указанный блок.
- Утверждение
- Коинбейс
- Сигнатура