Development Update - June 2, 2015

eduffield

Core Developer
Mar 9, 2014
1,084
5,320
183
Hello Everyone!

We’re just starting to wind down active development of version 12, which is gearing up to be the largest release we’ve ever done. At this point it includes:
  • The removal of the reference node
  • A new quorum based masternode payment consensus system. This means masternodes will be elected each block to “vote” on who gets paid.
  • New budgeting protocol and a whole new list of commands for interacting with the budgeting system
  • There’s a hard fork and sporks that will activate and reduce the blockchain by 10%, after that superblocks will become available for a maximum value of 10% of the monthly reward.
  • Updated to Bitcoin v10 with headers first blocks
  • New improved masternode broadcast/ping architecture
  • New wallet repair buttons
  • New website for submitting proposals
  • Improvements to DS
At this point active development is going to slow down and we’re going to open private testing of the new functionality for the core team. This should last less than 2 weeks, then we’ll open public testing and development soon after. The public phase should be between 2 weeks and a month then we’ll do a full release.

At this point we’re looking for public comment and evaluation of the new source code for any issues that might be present.

Are you a skilled developer?

Feel free to checkout all of the new code and give us feedback via [email protected] or jump on slack chat and join the #development channel.

Full v12 source code:
https://github.com/dashpay/dash/tree/v0.12.0.x

Budgeting Code:
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

New Payment Code:
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

Description of Budgeting and Payment process:

In the new model, each block a random selection of 10 masternodes are elected to tell the network who should get paid. This is computed using the masternode input hashes for the first payment, then after a last payment is known a valid masternode with the longest wait time is selected.

Selection Algorithm:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternodeman.cpp#L368

Masternode Selection and Broadcast:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L460

Block Validation:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L280

Consensus disagreements are handled by the block validation code. After a period of time, the network should form complete consensus about who is suppose to get paid on which blocks. If there’s a disagreement, multiple payees per block can be valid. After the whole masternode network has been paid, only 1 payee should be valid each block. This gives us a pretty robust system that’s quorum based instead of blockchain based, so we don’t have to keep a complete history, but yet it’s just as secure.

Budget System Implementation

We now have a complete implementation of the budget system now in v12. Described Here and Here:

To submit a budget all one has to do is execute the following command:

'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
}
}
Any masternode can submit a budget directly through the API. The proposal managing website will simply have access to a masternode ,so it will have the capability of drafting then submitting new budgets to the network. This system is designed to be 100% decentralized and is built around the idea of storing all important budget information on the network itself, so that the proposal websites can run independently of the network, but still interact with it.

After a budget has been submitting to the network, other masternodes can calculate the hash of the budget in order to vote on it. By changing any piece of data associated with the proposal, the hash will be changed. Because of this once a proposal is in the system and being voted on, it can’t be changed without making a completely new proposal and requesting the masternodes vote on that one instead.

Finalized Budget

Once each month, a finalized budget will be suggested by the network. This is simply calculated by taking the list of budgets, sorted by “Yes Count”, then adding them to the final budget until 10% of the monthly reward is reached.

Masternodes will automatically vote on the finalized budget, which is then read by the network to authorize a super blocks at the end of the month.

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
}
}
 
Last edited by a moderator:

darkwing

Active Member
Apr 8, 2014
149
110
103
As always that looks like a massive amount of work accomplished. Thank you and well done team.

No mention of blinding though?
 
  • Like
Reactions: pille

Minotaur

Well-known Member
Foundation Member
Apr 7, 2014
452
1,079
263
Great work as always, thank you Evan. This is massive is really the missing link in crypto and will make this project truly decentralized and self sufficient.
 

jimbit

Well-known Member
Foundation Member
May 23, 2014
229
103
203
Holy updated code Batman!! I look forward to the public testing as always.
 

Raico

Well-known Member
Foundation Member
Dash Support Group
May 28, 2014
138
142
193
What a great job you all have done~!
Bravo~!
That's a very exciting annoucement and i'm looking for the testing

INNOVATION~!
 

MangledBlue

Well-known Member
Jun 28, 2014
1,246
678
183
USA
@Evan - When you say: Masternodes will automatically vote on the finalized budget, which is then read by the network to authorize a super blocks at the end of the month.

Do you mean that we'll be adding NEW DASH to the count, inflating the total ever created? or Am I understanding that wrong?
 

Minotaur

Well-known Member
Foundation Member
Apr 7, 2014
452
1,079
263
@Evan - When you say: Masternodes will automatically vote on the finalized budget, which is then read by the network to authorize a super blocks at the end of the month.

Do you mean that we'll be adding NEW DASH to the count, inflating the total ever created? or Am I understanding that wrong?
Yes, you are understanding that wrong, emission and inflation remain exactly the same.

In order to eliminate having a multisig account sitting there with a balance of coins waiting to be executed (what people were calling a pork barrel) Evan came up with a solution where the emission slows down while a set of projects is being approved and then it catches up once those projects are approved. So the coins are not minted until they are needed that is what he means by super blocks, instead of continually minting the 10% that is destined to development and promotion, the network just does not create those coins until the community has approved initiatives and only then the network mints the required coins for those initiatives always within the range of the 10% that has been dedicated to that purpose. I hope this is more clear.
 

Sub-Ether

Well-known Member
Mar 31, 2014
1,516
1,254
183
Absolutely superb :D
When bitcoin upgraded to header first on v0.10.0 , the Tao update ratio increased sizeably,
am looking forward to calculating it's effect on the speed of Dash, breaking one's own Tao ratio world record yet again is predicted :cool:
 

Darkuopm

Member
Jun 18, 2014
50
17
48
OK, so I just had a thought/question. What happens when the supper block is mined as far as minners payment and masternode payment. Is it like winning the lottery? supperblock = supper payments?
 
  • Like
Reactions: MangledBlue

coingun

Active Member
Masternode Owner/Operator
Jul 8, 2014
489
402
133
masternode.io
:) My English-tech doesn't afford to understand everything even after 5 perusals :D.
Guys like me need a simplified version. :D
Once I get a chance today I'll try and sit down and TL;DR it for you. Biggest take away is shit just got really damn decentralized in a very democratic way. Holy watchout for the price.
 

kot

Administrator
Dash Core Team
Foundation Member
Mar 17, 2015
711
1,879
263
Considering these 2 points:
...
  • A new quorum based masternode payment consensus system. This means masternodes will be elected each block to “vote” on who gets paid.
  • New budgeting protocol and a whole new list of commands for interacting with the budgeting system
...
this might be not only the largest release ever done by the Dash Team but also the largest improvement ever done since the Bitcoin invention. This opens so many opportunities...
I am REALLY excited about the future of the Dash project!
 

alex-ru

Grizzled Member
Dash Support Group
Jul 14, 2014
2,374
3,242
1,183
  • Like
Reactions: fulltimegeek

TanteStefana

Grizzled Member
Foundation Member
Mar 9, 2014
2,871
1,863
1,283
Wow, my head is spinning! You know, though I'm sure everyone sits around waiting for news as to what is up, and it seems slow, but really, the work you guys do is unbelievably fast! And always exciting! Can't wait for testing!!!

FYI I won't be able to get on slack for a while as my monitor broke and all I have ATM is my ubuntu laptop. Hope to replace it soon, before anything happens!
 
Last edited by a moderator: