# Основные понятия
Блокчейн VIZ относится к семейству Graphene (блокчейн-технология написанная на C++, открытый код). Исходный код Graphene доступен во множестве вариаций, так как он форкался (копировался) и видоизменялся множество раз (например: BitShares, Steem, VIZ, служил основой для EOS).
Несмотря на общие элементы, в каждой системе есть достаточно много различий в объектах, структурах данных и внутренних механизмах, а также в экономике. Graphene - своего рода каркас, движок для блокчейн решений. Его структуру можно долго изучать, но для разработчиков приложений на том или ином блокчейне нет необходимости досконально знать, как устроен обмен данных между нодами, как происходит синхронизация и хранение данных в памяти. Главное - разобраться в основах.
# Нода блокчейн-системы
Программное обеспечение, которое связывается с другими нодами сети, принимает и транслирует транзакции другим нодам, ведет учет и обработку блоков (подробнее в разделе Типы нод).
# Аккаунты
В VIZ используется модель аккаунтов. Аккаунты входят в общее пространство имен, хранят в себе токены и публичные ключи доступа.
# Ключи и типы полномочий
Ключи бывают приватные и публичные. С помощью приватного ключа можно подписать сообщение. С помощью публичного ключа можно доказать факт подписи сообщения. Каждому приватному ключу соответствует единственный публичный ключ. Именно публичные ключи хранятся в блокчейн-системе. Используя их, ноды могут удостовериться, что то или иное действие инициировал владелец приватного ключа (соответствующего публичному ключу).
Аккаунт в блокчейне VIZ содержит три типа полномочий:
- master — отвечает за право владения аккаунтом;
- active — отвечает за управление токенами аккаунта;
- regular — отвечает за обычные операции (например, награждение).
Каждый тип полномочий может содержать список доверенных аккаунтов, которые могут подписать и выполнить операцию данного типа доступа от лица исходного аккаунта. Также каждый тип полномочий может содержать один или несколько публичных ключей разного веса (для возможности управления аккаунтом через multisig, когда аккаунтом владеют несколько пользователей).
Обычно аккаунт содержит либо единый ключ для всех типов полномочий, либо по одному ключу на каждый тип полномочий. Аккаунт дополнительно содержит memo-ключ, который используют для кодирования сообщений между участниками сети.
# Токены VIZ и доля сети SHARES
Токен VIZ является передаваемым (переносимым), он не участвует в управлении, но может быть переведен в социальный капитал (SHARES). Данную операцию в других блокчейнах часто называют стейкинг (staking). Аккаунт, владеющий социальным капиталом, может принимать участие в управлении.
# Делегаты
Аккаунт может заявить о своем намерении быть делегатом. Делегат (witness) избирается участниками сети (через процедуру голосования) и участвует в очереди делегатов для подписания блоков.
Участник сети может проголосовать как за одного, так и за нескольких делегатов, которые разделят между собой вес его голоса поровну. Чем больше социального капитала проголосует за делегата, тем выше он будет в очереди делегатов для подписания блоков.
Очередь делегатов состоит из 21 слота: 11 мест зафиксированы за делегатами, набравшими наибольшее количество голосов, остальные 10 мест занимают делегаты в плавающей конкурирующей очереди согласно набранным голосам.
# Транзакции
Пользователи создают операции (действия аккаунта в сети, подробнее в разделе Операции и их типы), формируют из них транзакцию, которую подписывают приватным ключом аккаунта нужного типа полномочий.
# Блоки
Ноды делегатов получают от всех узлов сети транзакции, которые отправили в сеть пользователи. Делегат, чья очередь подошла подписывать блок, формирует из очереди транзакций блок и отправляет его другим узлам сети. Новый блок формируется каждые 3 секунды. Все узлы сети проверяют подписи делегата, подписи пользователей в транзакциях и применяют операции по очереди. Таким образом формируется состояние системы (подробнее в разделе Состояние (стэйт) системы).
# Консенсус
VIZ использует консенсус Fair DPoS (Delegated Proof of Stake). Ноды хранят два состояния системы: необратимое и обратимое. Необратимость (irreversible) наступает тогда, когда в самой длинной цепочке блоков подтвердят свое участие в ней примерно 15 делегатов (75% от количества делегатов в очереди). После этого нода не может откатить более ранние транзакции, таким образом наступает финальность состояния сети (finality).
В обычном состоянии необратимость наступает за 15 блоков (около 45 секунд). Поэтому все важные операции, требующие проверки, могут получить подтверждение только достигнув необратимости.
# Плагины
Плагины расширяют возможности ноды, могут обрабатывать отдельные операции и управлять собственными структурами данных. Есть как обязательные плагины (отвечающие за соединение между узлами сети), так и необязатальные (например, история операций аккаунтов, подробнее в разделе Плагины и их API).