--- layout: post title: Новости разработки - 2 июня 2015 г. date: 2015-06-02 12:00:44.000000000 -04:00 type: post published: true status: publish categories: - Новости разработки - Общие новости tags: [] meta: _et_pb_page_layout: et_right_sidebar _et_pb_side_nav: 'off' _top_nav_excluded: '' _cms_nav_minihome: '' _et_post_bg_color: "#ffffff" _et_post_bg_layout: light _edit_last: '9' _webdados_fb_open_graph_specific_image: '' author: login: fernando email: gutierrezf@gmail.com display_name: Fernando Gutierrez first_name: Fernando last_name: Gutierrez ---

Здравствуйте!

Мы завершаем процесс активной разработки версии 12 Dash core, которая судя по всему станет самым крупным релизом за всю историю Dash. Наиболее заметные улучшения:

- Избавление от референсной Ноды
- Новый алгоритм голосования по выплатам Матернодам - каждый новый блок будут выбираться уполномоченные мастерноды, которые и будут определять, каким мастернодам пойдет очередная выплата
- Новый протокол бюджетирования (выделение средств на развитие проекта), с новым списком команд для взаимодействия с системой бюджетирования. Запланированы Хард-Форк и Спорки, которые активируют и уменьшат новые генерируемые блоки на 10%, после этого станет доступна генерация суперблоков с максимальным размером 10% от месячной генерации монет (т.е. размер общей эмиссии остаётся неизменным).
- Обновления кода с учётом изменений Bitcoin V10 - с приоритетной синхронизацией заголовков блоков
- Новая улучшенная архитектура протокола сети Мастернод
- Новые сервисные кнопки для восстановления Кошелька
- Новый Веб-сайт для формирования и учета предложений/проектов развития
- Улучшения технологии Darksend

Активная разработка завершается и наступает стадия закрытого тестирования нового функционала ключевыми разработчиками. Это займёт не более 2-х недель. Далее начнётся стадия публичного тестирования и доработки, которая продлится ориентировочно 2-4 недели и завершится новым релизом.

Мы открыты для комментариев касательно кода нового релиза и любых возможных замечаний.

Вы являетесь квалифицированным разработчиком?

Приглашаем вас изучить исходный код и прислать ваше мнение по адресу evan@dashpay.io или зайти на "slack chat" и присоединиться к каналу #development.

Полный исходный код версии v12:
https://github.com/dashpay/dash/tree/v0.12.0.x

Код системы бюджетирования:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-budget.cpp
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-budget.h

Новый код платежей:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.h

Описание системы бюджетирования и процесса выплат:

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

Алгоритм выбора:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternodeman.cpp#L368

Выбор Мастерноды и рассылка сообщения в сеть:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L460

Проверка блока:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L280

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

Реализация системы бюджетирования

В версии 12 у нас теперь появится полная реализация системы бюджетирования проектов.

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

`'mnbudget vote PROPOSAL-NAME URL PAYMENT_COUNT BLOCK_START DASH_ADDRESS DASH_AMOUNT YES|NO|ABSTAIN’
dash-cli mnbudget vote proposal-one http://www.dashpay.io/one.json 100 58381 y7B3r6SBi1E1RN39DS5WFJpdeS9EifDjMB 1000 yes
`

`dash-cli mnbudget show
{
"proposal-one" : {
"URL" : "http://www.dashpay.io/one.json",
"Hash" : "22a7fab3765b0aca926f71117114b5019ab616dda3d6bae520a27d76912228dd",
"BlockStart" : 58381,
"BlockEnd" : 63375,
"TotalPaymentCount" : 100,
"RemainingPaymentCount" : 100,
"PaymentAddress" : "y7B3r6SBi1E1RN39DS5WFJpdeS9EifDjMB",
"Ratio" : 1.00000000,
"Yeas" : 1,
"Nays" : 0,
"Abstains" : 0,
"Alloted" : 348214275,
"TotalBudgetAlloted" : 348214275
}
}
`

Бюджетное предложение может быть отправлено с любой мастерноды напрямую через API. Разрабатываемый сайт управления такими предложениями будет иметь доступ к одной из мастернод, поможет составить черновик предложения и отправить в сеть. Система спроектирована как 100% децентрализованная и строится на идее хранения предложений и бюджетов в самой сети, так что такой сайт сможет поднять любой желающий совершенно независимо и получить абсолютно ту же функциональность.

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

Итоговый бюджет

Раз в месяц формируется итоговый бюджет и предлагается сети. Итоговый бюджет - это попросту список бюджетных предложений, отсортированных по количеству голосов "За" и добавляемых в этот список до тех пор, пока он не превысит 10% награды в месячном исчислении.

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

https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L22
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L50

`dash-cli mnfinalbudget show
{
"main" : {
"SubmittedBy" : "0000000000000000000000000000000000000000000000000000000000000000-4294967295",
"Hash" : "34000e61801cb0df633839a3090c9241461b33e4d031c42632d64a3a109dc132",
"BlockStart" : 58400,
"BlockEnd" : 58400,
"Proposals" : ",22a7fab3765b0aca926f71117114b5019ab616dda3d6bae520a27d76912228dd",
"VoteCount" : 1
}
}
`