Viz.Doc - документация VIZ

_images/viz_doc.png

Что такое VIZ?

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

VIZ состоит из двух основных технических компонентов: базового консенсуса на основе DPOS и программного интерфейса программирования(api). Алгоритм консенсуса гарантирует, что одни и те же транзакции записываются в одинаковом порядке на всех компьютерах, а также обеспечивает базовые действия блокчейна, такие как распределение эмиссии, создание аккаунтов, выплаты пользователям за деятельность. API представляет из себя набор плагинов, которые написаны на языке xC++, и доступ к ним через веб-интерфейсы.

Чем отличается VIZ от Ethereum, Bitcoin и подобных проектов

В отличии от многих криптопроектов, как Ethereum или Bitcoin, в которых используются алгоритмы PoW или PoS, VIZ использует более демократичный алгоритм - DPOS. Это значит, что в сети главную роль играют не майнеры, а инвесторы, которые голосуют за создателей новых блоков - делегатов. Делегаты гарантируют стабильную работу блокчейна и получают за это выплаты. Однако система голосования устроена так, что владельцы большей доли сети имеют больший вес*. Кроме того, только лучший 21 делегат(который получил наибольшее количество голосов) имеет право создавать новые блоки и управлять параметрами сети.

Чем VIZ отличается от BitShares

VIZ, так же как BitShares, написан на основе Graphene. Оба проекта используют DPOS для подтверждения транзакций. Но BitShares задумывался как финансовая платформа, где можно создавать свои токены и торговать ими. В VIZ заложена иная идея: платформа для социальных приложений.

Чем VIZ отличается от Golos и Steem

Golos и Steem, так же как VIZ, созданы для социальных приложений. Однако два этих проекта задумывались как блог-платформы на блокчейне, где кураторы оценивают качество постов и решают какую выплату получит автор. Но VIZ позволяет получать награды за любые действия, даже за пределами блокчейна. Например можно сделать социальную сеть, где пользователи будут награждать людей, которые приручат бездомных животных. При этом награды будут выплачиваться из фонда ДАО VIZ, а не из кошельков пользователей. Подробнее про награды читайте в разделе «Экономика».

Чем VIZ отличается от EOS

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

На самом деле, на EOS можно реализовать все, что есть в VIZ. Главное отличие будет в том, что EOS приложение будет хранить свой код на многих компьютерах и работать на них же. А приложение на базе VIZ использует блокчейн только как базу данных с механизмом наград за разные действия. Выбор между децентрализацией и централизацией зависит от целей приложений. Разработчик должен сам решить, что подойдет именно его приложению.

Кто владеет VIZ

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

Кто поддерживает код VIZ

Код VIZ распространяется под MIT лицензией, это значит, что любой может вносить в код изменения.

Кто запустил блокчейн VIZ

Никто не знает кем была запущена сеть.

Экономика

VIZ стремится быть децентрализованной автономной организацией(DAO, DAC, ДАО)[1][2]. Это значит, что любой человек может купить долю в блокчейне и управлять им, как акционерным предприятием.

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

Для наибольшей эффективности пользователи могут формироваться в группы, чтобы решить поставленную задачу. Причем ту задачу, которую группа поставила себе сама, потому что здесь нет боссов, а значит, некому отдавать команды. Каждый пользователь должен осознавать, что он - это часть организации, а VIZ - это живой организм. Иными словами, VIZ - это не просто децентрализованная организация, это децентрализованная бирюзовая организация[1][2]. А цель этой организации - создать блокчейн, на основе которого можно разрабатывать социальные приложения.

Активы

Каждый пользователь VIZ может владеть двумя базовыми активами: ликвидными токенами VIZ и долевыми токенами Shares. Подробнее эти активы описаны ниже.

Токен Viz

Токены VIZ - это токены блокчейна, которые владелец может свободно перемещать между аккаунтами и конвертировать в валюты, криптовалюту и в долевые токены сети VIZ. Ликвидные токены имеет смысл держать только для быстрой торговли на бирже или переводов между аккаунтами. Токены VIZ можно конвертировать в долевой токен Shares по цене, которую устанавливает блокчейн и которая зависит от соотношения всех токенов - ликвидных и долевых. Каждый год система увеличивает количество ликвидных токенов на 10%.

Долевой токен Shares

Долевой токен Shares гарантирует владельцу различные права в DAO VIZ. Владелец Shares имеет право выбирать делегатов и распределять эмиссию между пользователями сети. От количества долевых токенов зависит влияние держателя на процессы в блокчейне: чем больше Shares, тем выше влияние.

Долевые токены можно моментально приобрести за ликвидные токены, но конвертация обратно займет до ы28 дней (4 недели). Shares можно приобрести как за свои средства, так и за ликвидные токены другого аккаунта. Цена одного Shares примерна равна 1.005 viz, но с каждым блоком она увеличивается примерно на 00000000000003 viz. Связан этот прирост с погрешностью при счете, которая образовалась благодаря изменениям и ошибкам прошлых версий блокчейна (изначально 1 Shares был равен 1 viz). Посчитать более точное значение можно разделив половину ликвидный токенов от всех ликвидных токенов с учетом инфляции на количество долевых токенов, которое можно купить за эту половину (количество выпущенных viz на данный момент / 2 / количество Shares).

Shares не могут свободно перемещаться от аккаунта к аккаунта, а значит, не могут торговаться на бирже. Однако, один участник может их делегировать (передать часть своих полномочий) второму участнику. Когда второй участник получит делегированные первым участником средства, то он приобретет дополнительное влияние ровно на делегированное количество Shares, а первый это влияние утратит.

Понижение доли

Долевые токены можно приобрести за токены VIZ, однако конвертация - понижение - всей доли обратно займет 28 дней. За один день понижается 1/28 часть от всех Shares аккаунта, это значит, что чем меньший процент своей доли будет понижать пользователь, тем быстрее он это сделает. Например, если у аккаунта всего 28 000 Shares, то все он преобразует в токены VIZ за 28 дней, а 1 000 за один день.

Чистые Shares

Чистые Shares - это количество долевых токенов аккаунта без учета переданных и полученных путем делегирования Shares. То есть это ровно столько токенов, сколько пользователь приобрел за VIZ.

Эффективные Shares

Эффективные Shares - это количество чистых долевых токенов, с учетом полученных и за вычетом переданных долевых токенов с помощью делегирования (Чистые Shares + Полученные Shares - Делегированные Shares).

Эффективные Shares не учитываются при голосовании за делегатов. При голосовании за делегатов учитываются только чистые долевые токены.

Вес аккаунта

Вес аккаунта - это процентное соотношение эффективных Shares пользователя к общему количеству Shares всех пользователей в системе (Эффективные Shares / Все Shares * 100%).

Чистый вес аккаунта

Чистый вес аккаунта - это процентное соотношение чистых Shares пользователя к общему количеству Shares всех пользователей в системе (Чистых Shares / Все Shares * 100%).

Эмиссия и плановая инфляция

Чтобы обеспечить оплату полезных действий в сети, в блокчейн заложен механизм эмисси. Выпуск ликвидных токенов осуществляется не случайным образом, а в соответствии с прогнозируемым ежегодным обесцениванием токена VIZ, то есть ежегодной инфляций. Считается, что токен будет обесцениваться в год примерно на 10%, поэтому система автоматически осуществляет компенсацию в свою пользу, примерно на 10% от общего объёма токенов (все ликвидные токены и все долевые токены).

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

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

Чтобы рассчитать, сколько токенов эмитируется вместе с каждым новым блоком, можно использовать следующую формулу:

Q = S * 10% / N где Q - количество, которое будет эмитировано, S - общее число всех токенов VIZ, которые есть в системе (включая акции в расчете на VIZ), N - количество генерируемых блоков в год.

Рассчитать N можно по следующей формуле:

N = 365 * 24 * 60 * 60 / v,

где v - скорость генерации новых блоков, равная 3 секундам.

Рассчитать годовую инфляция можно по следующей формуле: Q = S * 10%.

Эмиссированные токены распределяются по нескольким каналам:

  1. Фонд наград - 40% от эмиссии в год;
  2. Фонд комитета - 40% от эмиссии в год;
  3. Награда делегатам - 20% от эмиссии в год;

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

Награды за деятельность

Каждый аккаунт в сети VIZ может получить награду или наградить другого пользователя за любую деятельность. Награды эти выплачиваются из фонда наград, который пополняется раз в блок в соответствии с алгоритмом эмиссии. Размер награды зависит от веса награждающего аккаунта. Вдобавок этот аккаунт тратит некоторое количество энергии, которая восстанавливается со временем. Максимальное количество энергии равно 100%, в течении 24 часов восстанавливается 20% энергии, то есть за 1.2 часа восстанавливается 1% энергии. Таким образом, награждающий аккаунт ограничен энергетическими ресурсами, а значит, он должен эффективно расходовать свой потенциал, чтобы энергии хватило на все замыслы.

Для того, чтобы наградить участника, награждающий аккаунт должен указать процент от эффективных Shares, который он хочет задействовать для формирование выплаты (назовем это конкурирующими Shares, rShares). Конкурирующие Shares добавляются в пул конкуренции. Затем получателю сразу же из фонда наград выплачивается количество Shares, пропорционально равное отношению количества конкурирующих Shares к количеству Shares в пуле конкуренции (Фонда наград * (rShares / Shares в пуле конкуренции)). Вместе с этим аккаунт-отправитель тратит количество энергии, равное проценту, который он указал для эффективных Shares, но не тратит сами Shares.

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

Пример использования наград

Вообразим, что существует компания The Best Vizion Group, и в ней работает бухгалтер по имени Алекс. Алекс каждый день выполняет муторную работу по пересчету прибыли и затрат компании. Босс Алекса знает, как тяжело следить за финансами компании, поэтому в конце очередной адской неделе решил отблагодарить своего работника. Для этого он сформировал транзакцию-награду, в которой указал процент энергии, который будет затрачен на отправку награды, и добавил заметку «Спасибо за отличную работу». Далее, сразившись за монеты с другими «наградами» в пуле конкуренции, транзакция попадет к Алексу. Алекс рад, ведь он получил монеты и знает, что босс его ценит. Босс Алекса тоже рад, ведь ему не пришлось тратить ни копейки из своего кармана. Отметим лишь, что чем больше будет Shares у босса, тем большую награду получит Алекс. А так же заметим, что для получения награды Алексу нужно лишь иметь аккаунт в блокчейне, а боссу аккаунт и некоторое количество Shares на счету. Больше ничего в блокчейне им делать не нужно.

>

Конкурирующие Shares - rShares

rShares - это количество Shares, которое аккаунт обозначил для участия в пуле конкуренции.

Пул конкуренции

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

Спящие Shares

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

Комитет

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

Чтобы подать заявку, пользователь должен обозначить минимальную и максимальную сумму выплат. Минимальная сумма не может быть меньше 0 VIZ. Так же нужно указать время, в течении которого заявка должна быть рассмотрена. То есть срок, за который сообщество должно принять решение. Этот период можно выставить в диапазоне от 5 до 30 дней. Ко всему прочему, создатель должен указать ссылку на ресурс, где объясняет, зачем создана заявка и каким образом была сформирована ее цена. Кроме того, в заявке, помимо аккаунта создателя, прописывается заявка получателя (воркера, работника). В роли получателя может выступать как сам создатель, так и доверенное лицо, которое имеет большой авторитет на платформе. Иными словами, можно создать заявку через посредника. Посредник может, например, гарантировать, что сожжет все полученные токены, если исполнитель не выполнит какие-либо условия.

В течении выставленного времени члены сообщества могут проголосовать за заявку или против нее, или вообще не голосовать. Человек, который голосует, должен указать процент от максимальной суммы заявки, который он считает приемлемым. Процент этот может быть в диапазоне от -100% до 100%. Кроме того, при голосовании за один голос принимается один долевой токен. Это значит, что аккаунты с большим весом оказывают большее влияние на исход заявки, чем аккаунты с меньшим весом.

Чтобы заявка была принята, по истечении срока она должна получить 10%* от всех возможных голосов, иными словами, заявка должна набрать 10% от всех Shares в системе (и за, и против). Затем блокчейн вычисляет средний арифметический процент за заявку (количество всех процентов в диапазоне от -100% до 100% от максимальной суммы заявки, деленное на количество всех голосов, отданных за заявку). Если значение среднего процента от максимального запроса больше или равно минимальной сумме заявки, то заявка будет одобрена и получателю выплатят одобренную сумму. В противном случае заявка будет отклонена. Также заявка может быть отменена самим создателем, если он посчитает, что ее требования не обоснованы.

Делегаты

Делегаты - это участники сети, которым члены DAO VIZ доверили ее поддержку: создание и подпись блоков, управление экономическими и другими параметрами, в том числе принятие хардфорков. Доверие к делегату выражается в количестве отданных за него голосов. При этом за один голос принимается один Shares. То есть чем больше доля аккаунта в DAO, тем выше его влияние на выборы.

Деятельность делегатов разделена на раунды. За один раунд создается 21 блок с интервалом в 3 секунды, таким образом, продолжительность одного раунда составляет 63 секунды. В одном раунде могут принимать участие не более 21 делегата, которые в порядке очереди создают и подписывают новые блоки. За каждый созданный блок делегат получает награду в соответствии с моделью эмиссии. Один раунд включает 11 топ делегатов - тех, которые набрали наибольшее количество голосов и сменяются только в том случае, если кто-то набрал больше голосов, и 10 делегатов поддержки, которые периодически меняются местами с делегатами из очереди ожидания. Все делегаты, которые не вошли в текущий раунд, должны ждать нового, чтобы занять позицию предыдущего делегата поддержки. При этом длительность ожидания зависит от количества набранных делегатом голосов. По истечении времени делегаты из очереди ожидания меняются с делегатами поддержки.

Голосование за делегатов

Проголосовать за делегатов можно двумя способами:

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

При голосовании отдать свой голос можно максимум за 100 делегатов одновременно. Кроме того, сила голоса распределяется равномерно между всеми ними (если избиратель проголосовал за 4 делегатов, то каждому достанется 25% от Shares аккаунта).

Управление параметрами сети

Роль делегатов состоит в поддержке работоспособности сети и управлении ее параметрами. Делегаты могут управлять следующими параметрами:

  1. Принятие хардфорков;
  2. account_creation_fee - минимальная стоимость создания нового аккаунта в ликвидных токенах;
  3. create_account_delegation_ratio - коэффициент, который показывает во сколько раз больше нужно затратит токенов при создании аккаунта через делегирование долевых токенов, чем при создании за ликвидные токены (Shares = account_creation_fee * create_account_delegation_ratio);
  4. create_account_delegation_time - минимальный промежуток времени, по окончании которого пользователь может вернуть свои Shares, затраченные на создание аккаунта с помощью делегирования (при обычном делегировании доля может быть возвращена через 1 день);
  5. maximum_block_size - максимальный размер блока;
  6. min_delegation - минимальное количество делегируемых Shares;
  7. min_curation_percent [устарел] - минимальный кураторский процент, который автор может выставить за пост;
  8. max_curation_percent [устарел] - максимальный кураторский процент, который автор может выставить за пост;
  9. bandwidth_reserve_below - максимальное количество Shares аккаунта, при котором ему выделяется резервная пропускная способность;
  10. bandwidth_reserve_percent - процент резервирования пропускной способности от всего канала для аккаунтов с количеством Shares меньшим, чем bandwidth_reserve_below (может быть равен 0);
  11. flag_energy_additional_cost [устарел] - процент дополнительной затраты энергии при отрицательном голосовании за посты;
  12. vote_accounting_min_rshares - Минимальное количество rShares, при которых награда будет больше 0 ;
  13. committee_request_approve_min_percent - минимальный процент от всех голосов, отданных за заявку в комитете, при котором она считается подтвержденной;
  14. inflation_witness_percent - Процент от эмиссии, который распределяется между 21 делегатом, который вошел в раунд подписи блоков;
  15. inflation_ratio_committee_vs_reward_fund - Процентная пропорция, по которой распределяется остаток от эмиссии между пулом комитета и пулом наград;
  16. inflation_recalc_period - Количество блоков, через которое блокчейн проверяет актуальность инфляционных параметров;

Значение каждого пункта, кроме 1, считается истинным в соответствии с медианной выборкой. Для принятия хардфорка нужно подтверждение 17 делегатов в раунде.

Подробное описание голосуемых параметров

Ниже представлена таблица типов, которые использует блокчейн:

Тип Пример Диапазон Описание
VIZ актив "1.000 VIZ" от 0.001 VIZ Количество ликвидных токенов. Строка с десятичным числом с не более чем 3 цифрами после точки и обязательной приписок VIZ через пробел.
Пример: "1.123 VIZ"
SHARES актив "1.000000 SHARES" от 0.000001 SHARES Количество долевых токенов. Строка с десятичным числом с не более чем 6 цифрами после точки и обязательной приписок SHARES через пробел.
Пример: "1.123456 SHARES"
µShares 1000000 от 1 Количество микродолевых токенов. 1 = 0.000001 SHARES; 1000000 = 1.000000 SHARES. Цело число.
Процент 1000 от 1 до 10000 Процент в целом числовом формате. 0.01% = 1; 1% = 100; 100% = 10000;
Целое 1 Целое число

account_creation_fee

Добавлено: 1.0.0

Формат: VIZ актив

Чтобы стать держателем долевого токена, нужно зарегистрировать аккаунт. Аккаунт - это именной кошелек, на котором хранятся все средства пользователя. Регистрация не бесплатна, чтобы создать нового пользователя, кто-то из уже существующих членов DAO VIZ должен отправить транзакцию регистрации аккаунта и заплатить ликвидные токены, которые затем будут конвертированы в долевые токены нового аккаунта. Минимальное количество токенов, которое должен заплатить создатель, указаны в параметре account_creation_fee.

create_account_delegation_ratio

Добавлено: 1.0.0

Формат: Целое

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

Этот параметр отвечает за то, во сколько раз больше нужно потратить токенов при создании аккаунта через делегирование доли (Shares = account_creation_fee * create_account_delegation_ratio).

create_account_delegation_time

Добавлено: 1.0.0

Формат: Целое

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

maximum_block_size

Добавлено: 1.0.0

Формат: Целое

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

min_delegation

Добавлено: 1.0.0

Формат: VIZ актив

Пользователь не может делегировать другому аккаунту количество Shares меньшее, чем указано в min_delegation, в пересчете на ликвидные токены.

min_curation_percent [устарел]

Добавлено: 1.0.0

Устарел: 2.0.0

Формат: Процент

Минимальный кураторский процент, который автор может выставить за пост.

max_curation_percent [устарел]

Добавлено: 1.0.0

Устарел: 2.0.0

Формат: Процент

Максимальный кураторский процент, который автор может выставить за пост.

bandwidth_reserve_below

Добавлено: 1.0.0

Формат: SHARES актив

Если у аккаунта количество Shares меньше, чем показатель bandwidth_reserve_below, то ему выделяется дополнительная пропускная способность.

bandwidth_reserve_percent

Добавлено: 1.0.0

Формат: Процент

Процент, указанный в bandwidth_reserve_percent от всей пропускной способности сети, будет зарезервирован для аккаунтов с количеством Shares меньшим, чем bandwidth_reserve_below.

Если bandwidth_reserve_percent равен 0, то аккаунты с количеством Shares меньшим, чем bandwidth_reserve_below, будут заблокированы.

flag_energy_additional_cost[устарел]

Добавлено: 1.0.0

Устарел: 2.0.0

Формат: Целое

Процентный коэффициент дополнительной затраты энергии при отрицательном голосовании за посты.

vote_accounting_min_rshares

Добавлено: 1.0.0

Формат: µShares

Минимальное количество rShares, при которых награда будет больше 0.

Рассчитать rShares конкретного аккаунта можно по формуле

rShares = (s * 1000000) * e%.

s - количество эффективных Shares, e - процент от эффективных Shares и одновременно количество затрачиваемой энергии.

committee_request_approve_min_percent

Добавлено: 1.0.0

Формат: Процент

Минимальный процент от всех голосов, отданный за заявку воркера, при котором заявка считается подтвержденной(по умолчанию 1000).

inflation_witness_percent

Добавлено: 2.0.0

Формат: Процент

Процент от эмиссии, который распределяется между 21 делегатом, который вошел в раунд подписи блоков.

inflation_ratio_committee_vs_reward_fund

Добавлено: 2.0.0

Формат: Целое

Процентная пропорция, по которой распределяется остаток от эмиссии (вся эмиссия - inflation_witness_percent) между пулом комитета и пулом наград. При этом inflation_ratio_committee_vs_reward_fund сначала идет в пул комитета, а потом в пул наград.

Это значит, если inflation_ratio_committee_vs_reward_fund = 60%, то 60% направится в комитет, а 40% на награды.

inflation_recalc_period

Добавлено: 2.0.0

Формат: Целое

Количество блоков, через которое блокчейн проверяет актуальность инфляционных параметров (inflation_witness_percent, inflation_ratio_committee_vs_reward_fund). Если делегаты изменили какой-то из этих параметров, то блокчейн будет учитывать их не раньше, чем через inflation_recalc_period с последней проверки.

Пропускная способность

Примечание: пропускная способность измерятся в байт/shares. То есть показывает сколько байт вы можете отправить не за секунду, а за один долевой токен - Shares

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

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

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

Данную модель, может быть, непросто понять с первого раза. Давайте рассмотрим аналогию. Возьмем пустую банку. Ее объем - это размер зарезервированной пропускной способности. Заполним банку наполовину водой, столько занимает одна транзакция. Теперь наденем на банку крышку с маленьким отверстием. Перевернем банку. Через некоторое время из нее вытечет половина объема воды. Перевернем банку обратно и сними крышку. Нальем еще воды, равный половине объема банки. У нас осталось 1/4 свободного пространства. Теперь, если мы захотим налить еще воды, объем которой равен половине объема банки, то нам нужно отлить не менее 1/4 от объема банки, но мы не можем вылить этот объем сразу, для этого нам нужно надеть крышку с дыркой и перевернуть банку. Таким образом, можно сразу занять водой требуемый объем банки, но чтобы освободить в ней еще места, придется ждать некоторое время. Так и с транзакциями. Можно быстро отправить транзакцию в блокейн, но для отправки еще одной, возможно, потребуется время.

Чем отличается частичное резервирование от полного

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

При частичном резервировании каждый отдельный пользователь может использовать больше пропускной способности, когда в сети не происходят активные транзакции. И меньшею во время пиковых нагрузок. В тоже время блокчейн будет использовать полное резервирование при очень сильных нагрузках. Основная сложность такой модели состоит в выборе коэффициента резервирования при разной нагрузки. Если для полного резервирования можно выставить коэффициент, равный 1, то для других ситуаций может быть множество решений. В следующей главе описано, как работает распределение пропускной способности в VIZ.

Как рассчитывается пропускная способность в VIZ

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

Условное обозначение Единица измерения Описание
Bnew байт/shares Значение скользящей средней для пропускной способности, которое будет затрачено на данную транзакцию
Bold байт/shares Значение для скользящей средней уже затраченной пропускной способности
N байт Размер новой транзакции
W секунды Количество секунд в неделе
T секунды Разница между временем, когда была отправлена последняя транзакция и в данный момент
R процент(%) Процент выделенной пропускной способности для аккаунтов с малой долей в сети. Этот параметр устанавливают делегаты
C целое число Число активных аккаунтов(отправляли хотя бы одну транзакцию за 30 дней) с малой долей сети
Smax Shares Объем доли конкретного аккаунта
S Shares Объем доли конкретного аккаунта с учетом процента, выделенного для аккаунтов с малой долей сети.
M Shares Объем доли всех аккаунтов
G байт Максимальный размер блока. Это параметр устанавливается делегатами
K целое число Коэффициент резервирования пропускной способности от 1 до 2000
L целое число Количество блоков, которое будет сгенерированно за неделю
E байт/shares G * L * K - максимальная пропускная способность при данной нагрузке

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

Для каждого конкретного аккаунта устанавливается лимит пропускной способности (S / M) * Е, то есть пропорционально его доли в сети. Причем, S = Smax * (100% - R) , если Smax считается нормальной, и S = M * R / C для аккаунтов с малой долей. Это значит, что от аккаунтов с достаточным стеком отнимается часть пропускной способности и распределяется среди аккаунтов с малой долей в сети. Если Bnew превысит зарезервированное значение, то аккаунт не сможет отправить новую транзакцию. В свою очередь, Bnew вычисляется по следующей формуле:

Bnew = MAX(0, (W - T) * Bold / W) + N.

Из формулы следует, что чем больше прошло времени с последней транзакции, тем меньше будет Bnew и если последняя транзакция происходила семь дней назад, то Bnew = 0

Как VIZ определяет коэффициент резервирования

Каждый раз, когда значение скользящего среднего размера блока больше чем 25% от максимального размера блока G, блокчейн уменьшает К в два раза. Когда нагрузка спала, блокчейн снова увеличивает K, прибавляя единицу каждую минуту. Снижение K в два раза гарантирует, что аккаунты, которые использовали меньше 50% от предыдущей зарезервированной пропускной способности, не будут задеты, если нагрузку не вызвали держатели очень большого стека.

Формула расчета нового значения средней скользящей для размера блока:

Anew = (99 * Aold + Q) / 100

Условное обозначение Единица измерения Описание
Anew байт Новое значение скользящей средней для размера блока
Aold байт Последнее значение скользящей средней для размера блока
Q байт Размер нового блока

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

Аккаунты и разрешения

Аккаунт - это учетная запись пользователя или группы пользователей, с помощью которой совершаются все операции в блокчейне VIZ. Каждому аккаунту в качестве идентификатора присваивается уникальное, доступное для человеческого восприятия имя длиной от 2 до 25 символов латинского алфавиты. Кроме того, имена аккаунтов могут указывать на пространства имен(домен), которые отделяются точкой. При этом только владелец домена может создать поддомен(например только аккаунт @domain может создать аккаунт @subdomain.domain). По умолчанию аккаунтом владеет только один человек и он должен прописать в нем четыре публичных ключа: главный ключ, активный ключ, регулярный ключ и коммуникативный ключ. Каждый публичный ключ должен быть создан из разных приватных ключей, используя алгоритм на базе эллиптической криптографии для кривой secp256k1(такая же кривая используется в Bitcoin).

Ниже в таблице приведены параметры для secp256k1

Параметр Значение
p 0xffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f
a 0
b 7
Gx 0x79be667e f9dcbbac 55a06295 ce870b07 029bfcdb 2dce28d9 59f2815b 16f81798
Gy 0x483ada77 26a3c465 5da4fbfc 0e1108a8 fd17b448 a6855419 9c47d08f fb10d4b8
n 0xffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141
h 1

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

Ниже в таблице описаны все ключи и операции, которые с помощью них можно совершать

Ключ Разрешения
Регулярный Отправка custom-транзакций, награда пользователей, изменение метаданных аккаунта, любые действия с комитетом.
Активный Все что можно делать с помощью регулярного ключа, вдобавок позволяет проводить операции с активами и голосовать за делегатов. То есть позволяет совершать активные действия в блокчейне VIZ, управлять им при помощи своей доли.
Главный Все что можно делать с помощью регулярного и активного, кроме того, с его помощью можно заменить ключи.
Коммуникативный Не позволяет подписывать транзакции, но с его помощью можно засекречивать сообщения, например шифровать при помощи алгоритма ECDH заметки с переводом токенов.

Аккаунт с несколькими пользователями

Если пользователь знает главный приватный ключ конкретного аккаунта, то он может добавить к учетной записи других пользователей. Чтобы это сделать, нужно или добавить к аккаунту еще один ключ: главный, активный или регулярный — и передать второму пользователю, или владелец может прописать в своей учетной записи главную, активную или регулярную роль для другого аккаунта, то есть связать один аккаунт с другим. Отличие роли от ключей состоит лишь в том, владельцы привязанного аккаунта для подписи транзакций будут использовать свои приватные ключи. Отметим, что связывание аккаунтов - более гибкий способ добавления пользователей к главному аккаунту, так как привязав один аккаунт можно сразу же приписать полномочия группе людей.

Стоит учитывать, что пользователь, который получил дополнительный ключ или аккаунт, которому приписана одна из трех ролей, ничем не ограничены при подписи транзакций от имени главного аккаунта, кроме как уровнем доступа ключа или роли. То есть, если пользователю выделен главный ключ или аккаунту приписана главная роль, то и пользователь, и аккаунт смогут сами распределять уровни доступа к главному аккаунту для других участников ДАО VIZ, и даже ограничить доступ первоначальному владельцу аккаунта.

Мультиподпись

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

Пример мультиподписи

Пусть в аккаунте с весовым порогом 100 прописано три пользователя: Алиса, Макс и Боб. У Боба будет вес 25 и у Макса будет — 25, а у Алисы вес будет 50. Тогда Бобу, чтобы отправить транзакцию, придется помимо своей подписи, попросить подпись у Алисы и Макса, ведь только тогда суммарный вес подписавшихся будет равен весовому порогу аккаунта 100. Аналогично нужно будет поступить Максу и Алисе, чтобы отправить транзакцию от имени аккаунта. Таким образом никто не сможет отправить транзакцию без соглашения всех участников, так можно избежать злоупотребление властью для каждого пользователя, ведь в данной ситуации никто в одиночку не сможет управлять аккаунтом. Транзакция может быть отправлена только с согласия все участников, в данном примере.

Регистрация

Чтобы создать новый аккаунт в VIZ, нужно отправить специальную транзакцию(account_create), которая зарегистрирует новую учетную запись. В этой транзакции нужно указать имя нового аккаунта(name), аккаунт-рефера(referrer), заполнить метаданные аккаунта(json_metadata), вписать четыре публичных ключа: главный(master_authority), активный(active_authority), регулярный(regular_authority), коммуникативный(memo) - или заместо ключей привязать к одноименным ролям уже существующие аккаунты, но коммуникативный ключ все равно придется прописать, так как под него роли нет. Кроме того, отправитель транзакции должен заплатить за создание аккаунта сумму не меньшую, чем указали делегаты, по умолчанию цена создания одного аккаунта равна 1 viz. Все ликвидные токены, которые заплатит регистратор будут конвертированы в Shares нового аккаунта.

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

Регистрация через делегирование доли

Чтобы не тратить ликвидные токены, регистратор может создать новый аккаунт делегированием. Для этого он должен так же отправить транзакцию, но указать в ней не количество ликвидных токенов, которые готов потратить, а количество долевых токенов, которые он готов делегировать. Стоимость в viz всех делегированных Shares не должно быть меньшим, чем указали делегаты, по умолчанию общая стоимость должна составляет 10 viz. Вместе с делегированием регистратор может потратить и ликвидные токены, они так же будут конвертированы в Shares нового аккаунта, но на цену транзакции не повлияют, аккаунт будет создан или за viz или за Shares. Если количество viz достаточно для регистрации за ликвидные токены, то аккаунт будет создан за viz, если не достаточно, то за Shares. Если не достаточно и Shares, то аккаунт не будет создан вообще. Но в любом случае, при успехе, все токены и ликвидные, и долевые будут переведены на счет нового аккаунта.

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

Регистрация через инвайт код

Подробнее про инвайт коды читайте в разделе: Инвайт коды.

Еще один удобный способ создать новый аккаунт — регистрация через инвайт коды. Для этого регистратор должен сформировать инвайт код на сумму не меньшую, чем указали делегаты, и пароль для него. Затем передать все это человеку, который хочет зарегистрировать аккаунт. После этот человек должен отправить специальную транзакцию(invite_registration), которая зарегистрирует новый аккаунт, потратив токены из инвайт кода. Если у человека уже есть аккаунт, то он может отправить транзакцию с помощью своей учетной записи и своего активного приватного ключа. Если у него еще нет аккаунта то можно отправить транзакцию с помощью аккаунта @invite, который принадлежит блокчейну, подписав ее приватным ключом 5KcfoRuDfkhrLCxVcE9x51J6KN9aM9fpb78tLrvvFckxVV6FyFW. При таком способе регистрации все токены так же будут конвертированы в Shares нового аккаунта. Однако стоить учитывать, что владелец пароля от инвайт кода может потратить средства средства не на регистрацию аккаунта, а на перевод средства на уже существующий аккаунт.

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

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

Когда @anonymous получит перевод, он создаст новый аккаунт по схеме @nX.anonymous, где X — номер анонимного аккаунта. Номер @anonymous приписывает сам, прибавляя единицу к количеству уже созданных анонимных аккаунтов.

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

Энергия

У каждого аккаунта в блокчейне есть запас энергии, который измеряется в процентах. Максимальное значение энергии 100% минимальное же может быть -100%, то есть меньше 0%. Энергия нужна для того, чтобы отправлять награды другим пользователям, если энергии не хватает, то аккаунт не сможет наградить участника необходимой суммой токенов, а если энергия равна 0% или меньше него, то аккаунт вообще не сможет отправить награду, но он по прежнему сможет совершать другие операции в блокчейне, например, он будет способен переводить токены между аккаунтами, голосовать за делегатов и делать все, что мог со 100% энергии. Подробнее про награды читайте в разделе Награды за деятельность.

Энергия тратится в двух случаях. Во-первых, когда аккаунт награждает участника, тогда пользователь сам указывает какое количество хочет потратит, и от этого количества зависит размер награды. Во-вторых, когда аккаунт делегирует Shares другому пользователю. Делегирование происходит в двух случаях: при регистрации аккаунта через делегирование и при делегировании доли уже существующему аккаунту. При любом способе делегирования инициатор не может сам указать количество энергии, которое будет затрачена, но оно прямо пропорционально количеству Shres, которое будет отправлено (чем больше Shares будет делегировано, тем больше будет затрачено энергии). Блокчейн рассчитывает количество, которое будет затрачено, по формуле: делегировано shares / эффективные shares * 100%. Каким бы способом аккаунт не расходовал энергию, ее количество влияет только на возможность отправлять награды другим участникам.

Тратиться энергия моментально, но восстанавливается она медленно: 20% за 24 часа, 1% за 1.2 часа и за 1 секунду восстанавливается всего 0.01% энергии.

Данные аккаунтов

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

Для начала ознакомьтесь с таблицей типов информации, который использует блокчейн:

Тип Пример Диапазон Описание
VIZ актив "1.000 VIZ" от 0.001 VIZ Количество ликвидных токенов. Строка с десятичным числом с не более чем 3 цифрами после точки и обязательной приписок VIZ через пробел.
Пример: "1.123 VIZ"
SHARES актив "1.000000 SHARES" от 0.000001 SHARES Количество долевых токенов. Строка с десятичным числом с не более чем 6 цифрами после точки и обязательной приписок SHARES через пробел.
Пример: "1.123456 SHARES"
µShares 1000000 от 1 Количество микродолевых токенов. 1 = 0.000001 SHARES; 1000000 = 1.000000 SHARES. Цело число.
Процент 1000 от 0 до 10000 Процент в целом числовом формате. 0.01% = 1; 1% = 100; 100% = 10000;
Целое 1 Целое число. Слишком большие числа могут быть представлены строковым типом.
Байт 1 Количество байт в целом числовом формате. Слишком большие значения записаны в виде строк.
мкБайт Количество микробайт в целом числовом формате. Слишком большие значения записаны в виде строк.
1 Байт = 1000000 Байт
Время "2018-09-30T05:58:57" Строковой тип времени в формате "YYYY-MM-DDThh:mm:ss".
JSON "{"param1":"value"}" Строка в формате JSON
Аккаунт "example" Имя аккаунта в строковом формате.
Ключ "VIZ8XwKjAkG5...." Публичный ключ в строковом формате с приставкой "VIZ".

average_bandwidth

Добавлено: 1.0.0

Формат: мкБайт

Значение скользящей средней для затраченной пропускной способности на момент последней транзакции.

lifetime_bandwidth

Добавлено: 1.0.0

Формат: мкБайт

Количество мкБайт, которое аккаунт использовал за с момента создания.

balance

Добавлено: 1.0.0

Формат: VIZ актив

Количество viz на балансе аккаунта.

vesting_shares

Добавлено: 1.0.0

Формат: SHARES актив

Количество чистых Shares аккаунта.

delegated_vesting_shares

Добавлено: 1.0.0

Формат: SHARES актив

Количество Shares, которое делегировал аккаунт другим пользователям.

received_vesting_shares

Добавлено: 1.0.0

Формат: SHARES актив

Количество полученных Shares путем делегирования.

next_vesting_withdrawal

Добавлено: 1.0.0

Формат: Время

Время когда произойдет следующие списание на vesting_withdraw_rate при включенном понижении доли.

to_withdraw

Добавлено: 1.0.0

Формат: µShares

Количество Shares, которое аккаунт запросил для понижения доли.

withdraw_routes

Добавлено: 1.0.0

Формат: µShares

Количество аккаунтов, с которыми аккаунт может поделить Shares во время понижения доли. Максимальное количество 10 человек.

vesting_withdraw_rate

Добавлено: 1.0.0

Формат: SHARES актив

Количество Shares которые будут списываться каждый день при включенном понижении доли.

benefactor_awards

Добавлено: 2.0.0

Формат: µShares

Количество µShares(мкShares) которые аккаунт получил в качестве бенефициарских выплат с наград за все время.

receiver_awards

Добавлено: 2.0.0

Формат: µShares

Количество µShares(мкShares) которые аккаунт получил в качестве наград за все время.

vote_count

Добавлено: 1.0.0

Формат: Целое

Количество наград, которое отправил аккаунт. До 4 хардфорка этот параметр показывал количество голосов, которые аккаунт поставил разным постам.

created

Добавлено: 1.0.0

Формат: Время

Время, когда был создан аккаунт.

custom_sequence

Добавлено: 2.0.0

Формат: Число

Количество custom-транзакций, которые отправил пользователь с момента 4 хардфорка.

custom_sequence_block_num

Добавлено: 2.0.0

Формат: Число

Номер последнего блока, в который была помещена последняя custom-транзакция аккаунта.

energy

Добавлено: 1.0.0

Формат: Процент

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

id

Добавлено: 1.0.0

Формат: Целое

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

name

Добавлено: 1.0.0

Формат: Аккаунт

Имя аккаунта.

json_metadata

Добавлено: 1.0.0

Формат: JSON

Метаданные аккаунта в формате JSON. В них можно, например, хранить информацию о профиле пользователя: имя, фамилия, сайт, социальные сети, пол, должность, место работы. У аккаунта @anonymous заместо JSON строки хранится количество анонимных аккаунтов. Параметр также может быть пустой строкой.

last_account_recovery

Добавлено: 1.0.0

Формат: Время

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

recovery_account

Добавлено: 1.0.0

Формат: Строка

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

referrer

Добавлено: 1.0.0

Формат: Аккаунт

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

last_account_update

Добавлено: 1.0.0

Формат: Время

Время, когда аккаунт в последний раз обновлял ключи, роли или json_metadata.

last_owner_update

Добавлено: 1.0.0

Формат: Время

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

last_owner_update

Добавлено: 1.0.0

Формат: Время

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

witness_votes

Добавлено: 1.0.0

Формат: Массив аккаунтов

Список делегатов, за которых проголосовал пользователь.

witnesses_voted_for

Добавлено: 1.0.0

Формат: µShares

Количество делегатов, за которое проголосовал аккаунт.

witnesses_vote_weight

Добавлено: 2.0.0

Формат: µShares

Количество голосов, которые отдал пользователь за каждого делегата. Рассчитывается по формуле: (чистые s=Shares + Shares прокси-аккаунта) / witnesses_voted_for.

proxied_vsf_votes

Добавлено: 1.0.0

Формат: Массив µShares из 4 элементов

Массив из 4 элементов, каждый из которых отображает количество Shares, которое доверили аккаунту другие аккаунты или прокси-аккаунту. Первый элемент показывает количество чистых Shares обычных аккаунтов, остальные три - количество чистых Shares прокси-аккаунтов. К прокси-аккаунту может быть привязано максимум три других прокси аккаунтов.

proxy

Добавлено: 1.0.0

Формат: Аккаунт

Имя прокси-аккаунта, которому пользователь доверил свои голоса за делегатов.

master_authority

Добавлено: 1.0.0

Формат: Массив

Массив содержащий массив главных ключей и массив аккаунтов привязанных к главной роли

account_auths

Добавлено: 1.0.0

Формат: Массив массивов аккаунтов и их весов

Список аккаунтов, привязанных к главной роли, и их весов.

Пример: account_auths: [[„example“, 20], [„owner“, 50]]

key_auths

Добавлено: 1.0.0

Формат: Массив массивов ключей и их весов

Список главных ключей и их весов.

Пример: key_auths: [[„VIZ6cMf37KNdYiqXNfaCf7VFQDuPUWE6z5dw9LYLbSSGg5kAN1RMi“, 20], [„VIZ6cMf38KNeYiqXNfsCf7VFQDuPUUE6z5dw9LYLbSSGg6kAN1RMi“, 50]]

active_authority

Добавлено: 1.0.0

Формат: Массив

Массив содержащий массив активных ключей и массив аккаунтов привязанных к активной роли

account_auths

Добавлено: 1.0.0

Формат: Массив массивов аккаунтов и их весов

Список аккаунтов, привязанных к активной роли, и их весов.

Пример: account_auths: [[„example“, 20], [„owner“, 50]]

key_auths

Добавлено: 1.0.0

Формат: Массив массивов ключей и их весов

Список активных ключей и их весов.

Пример: key_auths: [[„VIZ6cMf37KNdYiqXNfaCf7VFQDuPUWE6z5dw9LYLbSSGg5kAN1RMi“, 20], [„VIZ6cMf38KNeYiqXNfsCf7VFQDuPUUE6z5dw9LYLbSSGg6kAN1RMi“, 50]]

regular_authority

Добавлено: 1.0.0

Формат: Массив

Массив содержащий массив регулярных ключей и массив аккаунтов привязанных к регулярной роли

account_auths

Добавлено: 1.0.0

Формат: Массив массивов аккаунтов и их весов

Список аккаунтов, привязанных к регулярной роли, и их весов.

Пример: account_auths: [[„example“, 20], [„owner“, 50]]

key_auths

Добавлено: 1.0.0

Формат: Массив массивов ключей и их весов

Список регулярных ключей и их весов.

Пример: key_auths: [[„VIZ6cMf37KNdYiqXNfaCf7VFQDuPUWE6z5dw9LYLbSSGg5kAN1RMi“, 20], [„VIZ6cMf38KNeYiqXNfsCf7VFQDuPUUE6z5dw9LYLbSSGg6kAN1RMi“, 50]]

memo_key

Добавлено: 1.0.0

Формат: Ключ

Коммуникативный ключ аккаунта

awarded_rshares

Устарело: 2.0.0

Добавлено: 1.0.0

Формат: µShares

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

curation_rewards

Устарело: 2.0.0

Добавлено: 1.0.0

Формат: µShares

Количество µShares(мкShares) которые аккаунт получил в качестве бенефициарских выплат с курируемых постов до 4 хардфорка. Устарело из-за смены экономической модели - отказ от позиционирования как блог платформа.

posting_rewards

Устарело: 2.0.0

Добавлено: 1.0.0

Формат: µShares

Количество µShares(мкShares) которые аккаунт получил за свои посты вплоть до 4 хардфорка. Устарело из-за смены экономической модели - отказ от позиционирования как блог платформа.

last_post

Устарело: 2.0.0

Добавлено: 1.0.0

Формат: Время

Время, когда был отправлен последний пост или комментарий. Устарело из-за смены экономической модели - отказ от позиционирования как блог платформа.

last_root_post

Устарело: 2.0.0

Добавлено: 1.0.0

Формат: Время

Время, когда был отправлен последний пост. Устарело из-за смены экономической модели - отказ от позиционирования как блог платформа.

last_vote_time

Устарело: 2.0.0

Добавлено: 1.0.0

Формат: Время

Время голосования за последний пост. Устарело из-за смены экономической модели - отказ от позиционирования как блог платформа.

content_count

Устарело: 2.0.0

Добавлено: 1.0.0

Формат: Целое

Количество постов пользователя. Устарело из-за смены экономической модели - отказ от позиционирования как блог платформа.

subcontent_count

Устарело: 2.0.0

Добавлено: 1.0.0

Формат: Целое

Количество комментариев пользователя. Устарело из-за смены экономической модели - отказ от позиционирования как блог платформа.

Инвайт коды

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

Чтобы создать инвайт код, пользователь должен отправить транзакцию создания инвайт кода(create_invite). В этой транзакции нужно указать: имя своего аккаунта в качестве инициатора, публичный ключ и сумму токенов, которую получит обладатель приватного ключа. Публичный ключ генерируется так же как для аккаунта, то есть на базе эллиптической криптографии с использованием кривой secp256k1. Как только транзакция попадет в блокчейн, у инициатора будут заморожены средства в указанном объеме.

Чтобы перевести средства с инвайт кода на любой другой аккаунт, обладателю приватного ключа нужно отправить транзакцию(claim_invite_balance), в которой нужно указать приватный ключ и аккаунт получателя. Если приватный ключ подойдет к публичному и аккаунт-получатель существует, то на указанный аккаунт будут перечислены вся сумма ликвидных токенов, которая указана в инвайт коде. Кроме простого перевода, с помощью помощью инвайт кода можно создавать новые аккаунты, отправив транзакцию регистрации через инвайт(invite_registration). Подробнее о регистрации через инвайты читайте в разделе об аккаунтах.

1 пример использования инвайт кодов. Подарок

В неком городе живет человек по имени Боб. У его мамы сегодня день рождения. Боб решил подарить маме несколько токенов viz, но он хочет сделать это красиво. Если Боб переведет токены до того как придет домой, то мама все узнает и сюрприз испортится. Если он захочет перевести токены в мамином присутствии, то кто знает какая неприятная ситуация случится, возможно в этот момент Боб не сможет отправить транзакцию в блокчейн из-за медленного интернета. Тогда Боб решил поступить иначе, он сформирует инвайт код, распечатает в виде QR-кода и подарит маме в красивой открытке.

2 пример использования инвайт кодов. Регистрация

Алиса решила зарегистрировать своего коллегу по работе Макса в ДАО VIZ, но Макс еще не знает какой хочет себе логин. Поэтому чтобы долго не сидеть за компьютером Алиса решила создать инвайт код и передать его Маку, чтобы он зарегистрировал себе аккаунт, когда придет домой.

Многоуровневые платные подписки

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

Любой пользователь может внедрить сервис многоуровневой подписки для своего аккаунта, и при том только один, отправив транзакцию внедрения подписки(set_paid_subscription). В ней нужно указать ссылку на веб-ресурс с информацией о подписке, свой аккаунт, максимальное количество уровней, цену одного уровня и период времени за которой с подписчиков будут списываться ликвидный токены. После любой пользователь сможет оформить платную подписку на этот аккаунт, указав желаемый уровень, но не выше максимального количества уровней. Цена конкретного уровня будет во столько раз выше первого, во сколько номер уровня больше единицы(если первый уровень стоит 10 viz, то 3 будет - 30 viz). По желанию подписчик может указать будут ли средства автоматически списываться по окончании каждого периода или они спишутся только один раз. Если у подписчика, на счету будет меньше ликвидных токенов, чем нужно для выплат по подписке, то она будет отменена, по окончании старого соглашения, при условие, что было включено автоматическое списание средств.

Изменения в условиях подписки

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

Пример использования подписок

Маша недавно открыла свой фитнес-клуб. В этом клубе она решила, что будет хорошо, если посетители клуба смогут оформить годовой абонемент на посещение занятий, который предоставлял его обладателям особые льготы. Кроме того, она решила, что сделает три вида абонементов: обычный, супер и VIP. Абонемент «Супер» должен быть дороже абонемента «Обычный», а «VIP» дороже всех. Теперь дело за малым. Осталось это только реализовать. Для этого она создала аккаунт в ДАО VIZ с названием @mashas-club и внедрила в него модель трехуровневой подписки указав цену за первый уровень 100viz. Таким образом у посетителей Машеного клуба есть возможность оформить абонемент в виде подписки в ДАО VIZ, для этого им лишь нужно иметь аккаунт в системе.

Словарь

Термин Описание
Пропускная способность, газ, bandwidth Механизм, который борется со злоупотреблением сети, то есть со спамом.
Токен Viz Токены VIZ - это токены блокчейна, которые владелец может свободно перемещать между аккаунтами и конвертировать в валюты, криптовалюту и в долевые токены сети VIZ.
Долевой токен Shares Долевой токен Shares гарантирует владельцу различные права в DAO VIZ. Владелец Shares имеет право выбирать делегатов и распределять эмиссию между пользователями сети. От количества долевых токенов зависит влияние держателя на процессы в блокчейне: чем больше Shares, тем выше влияние.
Чистые Shares Чистые Shares - это количество долевых токенов аккаунта без учета переданных и полученных путем делегирования Shares. То есть это ровно столько токенов, сколько пользователь приобрел за VIZ.
Эффективные Shares Эффективные Shares - это количество личных долевых токенов, с учетом полученных и за вычетом переданных долевых токенов с помощью делегирования (Личные Shares + Полученные Shares - Делегированные Shares).
Вес аккаунта Это процентное соотношение эффективных Shares пользователя к общему количеству Shares всех пользователей в системе(Эффективные Shares / Все Shares * 100%).
Чистый вес аккаунта Это процентное соотношение чистых Shares пользователя к общему количеству Shares всех пользователей в системе(Чистые Shares / Все Shares * 100%).
Конкурирующие Shares, rShares это количество Shares, которое аккаунт обозначил для участия в пуле конкуренции.
Пул конкуренции Это суммарное количество rShares от всех пользователей
Спящие Shares Это Shares, которые не участвуют в распределении выплат из фонда наград.
Комитет Фонд поддержки полезных, по мнению сообщества, проектов для VIZ.
Фонд наград Это фонд, из которого DAO VIZ платит награды за какие-либо действия внутри блокчейна или за его пределами. Фондом распоряжаются все члены сообщества VIZ
DAO, DAC, ДАО[1][2] Децентрализованная автономная организация, в которой каждый держатель доли является руководителем. В реальном мире DAO можно сравнить с акционерным предприятием, но DAO децентрализована и в ней нет лиц, которые отвечают за сохранение активов инвесторов.
Бирюзовая организация[1][2] Сообщество, которое по своему устройству похоже на живой организм, в котором участники сам решают, что для него будет полезно.
Делегаты Это участники сети, которым члены DAO VIZ доверили ее поддержку: создание и подпись блоков, управление экономическими и другими параметрами, в том числе принятие хардфорков.
custom-транзакция Транзакция, содержащая в себе текстовые данные, которые никак не влияют на поведение блокчейна. Эта транзакция как и любая другая использует пропускную способность аккаунта в зависимости от размера данных в ней.

Контакты

Телеграм чат взаимопомощи и источник знаний: @viztower. Чат создателя этой документации, в нем всегда рады новичкам и разным, даже глупым, вопрос о блокчейне VIZ.

Политический Телеграм чат @viz_world. Здесь принимают важные решения, но новичку в нем не место. Если хотите задать какой-то вопрос, то лучше делайте это в @viztower.

Телеграм канал с важными новостями из мира VIZ: @viz_report

Твиттер: @viz_report

Steem: @viz.report

Golos: @viz.report