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

Что такое VIZ?¶
VIZ - это блокчейн платформа для разработчиков, которые стремятся создать социальные приложения, где пользователи могут получать криптовалюту за любые действия в блокчейне и за его пределами. В сущности, это поставщик блокчейн услуг, который позволяет хранить информацию, создавать новые аккаунты и распределять между ними награды.
VIZ состоит из двух основных технических компонентов: базового консенсуса на основе DPOS и программного интерфейса программирования(api). Алгоритм консенсуса гарантирует, что одни и те же транзакции записываются в одинаковом порядке на всех компьютерах, а также обеспечивает базовые действия блокчейна, такие как распределение эмиссии, создание аккаунтов, выплаты пользователям за деятельность. API представляет из себя набор плагинов, которые написаны на языке xC++, и доступ к ним через веб-интерфейсы.
Чем отличается VIZ от Ethereum, Bitcoin и подобных проектов¶
В отличии от многих криптопроектов, как Ethereum или Bitcoin, в которых используются алгоритмы PoW или PoS, VIZ использует более демократичный алгоритм - DPOS. Это значит, что в сети главную роль играют не майнеры, а инвесторы, которые голосуют за создателей новых блоков - делегатов. Делегаты гарантируют стабильную работу блокчейна и получают за это выплаты. Однако система голосования устроена так, что владельцы большей доли сети имеют больший вес*. Кроме того, только лучший 21 делегат(который получил наибольшее количество голосов) имеет право создавать новые блоки и управлять параметрами сети.
Чем 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%.
Понижение доли¶
Долевые токены можно приобрести за токены VIZ, однако конвертация - понижение - всей доли обратно займет 28 дней. За один день понижается 1/28 часть от всех Shares аккаунта, это значит, что чем меньший процент своей доли будет понижать пользователь, тем быстрее он это сделает. Например, если у аккаунта всего 28 000 Shares, то все он преобразует в токены VIZ за 28 дней, а 1 000 за один день.
Вес аккаунта¶
Вес аккаунта - это процентное соотношение эффективных 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%
.
Эмиссированные токены распределяются по нескольким каналам:
- Фонд наград - 40% от эмиссии в год;
- Фонд комитета - 40% от эмиссии в год;
- Награда делегатам - 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 на счету. Больше ничего в блокчейне им делать не нужно.
>
Пул конкуренции¶
Пул конкуренции - это суммарное количество rShares всех пользователей. rShares конкретного пользователя участвуют в пуле только в течении 5 дней. Это значит, что пул не только постоянно растет, но и постоянно убывает. Также это значит, что конкуренция уходит в будущее, а не в прошлое. То есть отправитель конкурирует с rShares других участников, за которые уже были начислены выплаты. Кроме того, это значит, что если пул конкуренции равен 0, то самый первый отправитель потратит все средства фонда наград за один раз.
Комитет¶
Любой пользователь, который делает что-то полезное для сети, может потребовать от 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 делегатов поддержки, которые периодически меняются местами с делегатами из очереди ожидания. Все делегаты, которые не вошли в текущий раунд, должны ждать нового, чтобы занять позицию предыдущего делегата поддержки. При этом длительность ожидания зависит от количества набранных делегатом голосов. По истечении времени делегаты из очереди ожидания меняются с делегатами поддержки.
Голосование за делегатов¶
Проголосовать за делегатов можно двумя способами:
- Прямое голосование. При таком способе голосования каждый пользователь должен самостоятельно решать, за какого делегата отдать свой голос. При голосовании учитывается количество эффективных Shares.
- Голосование через прокси. При таком способе голосования пользователи выбирают аккаунт-прокси, который будет решать, кому из делегатов отдать их голоса. В свою очередь, аккаунт-прокси может доверить голоса своих пользователя другому аккаунту-прокси. Стоит учитывать, что при таком способе голосования пользователи передают аккаунту-прокси только свои чистые Shares.
При голосовании отдать свой голос можно максимум за 100 делегатов одновременно. Кроме того, сила голоса распределяется равномерно между всеми ними (если избиратель проголосовал за 4 делегатов, то каждому достанется 25% от Shares аккаунта).
Управление параметрами сети¶
Роль делегатов состоит в поддержке работоспособности сети и управлении ее параметрами. Делегаты могут управлять следующими параметрами:
- Принятие хардфорков;
- account_creation_fee - минимальная стоимость создания нового аккаунта в ликвидных токенах;
- create_account_delegation_ratio - коэффициент, который показывает во сколько раз больше нужно затратит токенов при создании аккаунта через делегирование долевых токенов, чем при создании за ликвидные токены (
Shares = account_creation_fee * create_account_delegation_ratio
); - create_account_delegation_time - минимальный промежуток времени, по окончании которого пользователь может вернуть свои Shares, затраченные на создание аккаунта с помощью делегирования (при обычном делегировании доля может быть возвращена через 1 день);
- maximum_block_size - максимальный размер блока;
- min_delegation - минимальное количество делегируемых Shares;
- min_curation_percent [устарел] - минимальный кураторский процент, который автор может выставить за пост;
- max_curation_percent [устарел] - максимальный кураторский процент, который автор может выставить за пост;
- bandwidth_reserve_below - максимальное количество Shares аккаунта, при котором ему выделяется резервная пропускная способность;
- bandwidth_reserve_percent - процент резервирования пропускной способности от всего канала для аккаунтов с количеством Shares меньшим, чем bandwidth_reserve_below (может быть равен 0);
- flag_energy_additional_cost [устарел] - процент дополнительной затраты энергии при отрицательном голосовании за посты;
- vote_accounting_min_rshares - Минимальное количество rShares, при которых награда будет больше 0 ;
- committee_request_approve_min_percent - минимальный процент от всех голосов, отданных за заявку в комитете, при котором она считается подтвержденной;
- inflation_witness_percent - Процент от эмиссии, который распределяется между 21 делегатом, который вошел в раунд подписи блоков;
- inflation_ratio_committee_vs_reward_fund - Процентная пропорция, по которой распределяется остаток от эмиссии между пулом комитета и пулом наград;
- 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
Формат: Целое
Процентный коэффициент дополнительной затраты энергии при отрицательном голосовании за посты.
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
Формат: мкБайт
Количество мкБайт, которое аккаунт использовал за с момента создания.
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 хардфорка этот параметр показывал количество голосов, которые аккаунт поставил разным постам.
custom_sequence¶
Добавлено: 2.0.0
Формат: Число
Количество custom-транзакций, которые отправил пользователь с момента 4 хардфорка.
custom_sequence_block_num¶
Добавлено: 2.0.0
Формат: Число
Номер последнего блока, в который была помещена последняя custom-транзакция аккаунта.
energy¶
Добавлено: 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
Формат: Массив
Массив содержащий массив главных ключей и массив аккаунтов привязанных к главной роли
active_authority¶
Добавлено: 1.0.0
Формат: Массив
Массив содержащий массив активных ключей и массив аккаунтов привязанных к активной роли
regular_authority¶
Добавлено: 1.0.0
Формат: Массив
Массив содержащий массив регулярных ключей и массив аккаунтов привязанных к регулярной роли
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
Формат: Время
Время голосования за последний пост. Устарело из-за смены экономической модели - отказ от позиционирования как блог платформа.
Инвайт коды¶
Инвайт код - это специальная запись в блокчейне, защищенная паролем, которая содержит гарантию, что обладатель пароля сможет выплатить любому аккаунту сумму ликвидных токенов, которая указанна в этой записи. Если проводить аналогию с банковской сферой, то банковский чек - наиболее близкое понятие. То есть ценная бумага, которая дает право владельцу получить от банка сумму, указанную в ней. Но в блокчейн нет ценных бумаг, а только транзакции, поэтому инвайт код - это запись, а не ценна бумага.
Чтобы создать инвайт код, пользователь должен отправить транзакцию создания инвайт кода(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