An Update To The Proposal
It dawned on me how to update the existing system to get the best of both worlds a fully decentralized system that pays exact amounts directly from the blockchain. We also figured out how to improve the decentralization of the proposal viewing application, so that anyone can run one of these websites independently of each other without having to copy data around. Between these two improvements, the initial version of the budgeting software will be highly decentralized and without any escrow account.
Proposal Website Decentralization
Anyone can start off a proposal by submitting it from a masternode. The data required consists of ProposalName, ProposalURL, PaymentCount, StartingBlock, PaymentAddress and PaymentAmountUSD. The ProposalURL is a json object with a ShortDescription, LongDescription, PDFURL and any other fields that are required to show users.
The site will be able to show this information, something like “mnbudget show”, which will return the following:
{
"one" : {
"URL" : "
http://www.dashpay.io/proposals/one.txt",
"BlockStart" : 1000,
"BlockEnd" : 24922,
"PaymentCountTotal" : 1,
"PaymentCountLeft" : 1,
"PaymentAddress" : "yDrdpBqfExiGbssu388t2k3N3de2KsWeNN",
"Ratio" : 1.00000000,
"Yeas" : 1,
"Nays" : 0,
"Abstains" : 0,
"Alloted" : 7500000000,
"TotalBudgetAlloted" : 7500000000
}
}
It will pull down the url and cache all of the information in a database. Notice proposal administrators must host the json object with the data about the proposal, this allows highly decentralized storage of the information in the proposals. Users can then register on the website, then post comments about proposals.
To allow people to submit proposals from these proposal websites, the website will have access to a masternode, that can submit it for the users. This means we’ll have a very friendly website for building these json files, which can show drafts to the community. Once a draft has been finalized, it can be submitted. After it’s submitted, this is non-reversible and these fields can’t be modified without losing all votes.
Removal Of The Reference Node
It’s a high priority to ship the first version with no reference node. We’re going to use masternode quorums to select the payee of each block. This means that 10 of 2500 masternodes will randomly be selected to have a task of voting who they think should get paid each block. We’re going to use a deterministic algorithm to select the payee, so all nodes should come to same conclusion.
How The Network Will Pay Proposals
To remove the escrow account and pay exact amounts we can use a spork to send the current USD value of DASH to the network. This process can be decentralized later, but is out of scope for the initial version. After the network has the correct value to use, we can then reduce the blocksize all all blocks by 10% and at the end of the cycle the network can pay the proposals their exact own amounts using very large blocks, which will catch it up with the required block reward.
Here’s an example of what this will look like, let’s say we have this budget and a $3 DASH price:
PropOne, Reward $8000
PropTwo, Reward $8000
PropThree, Reward $5000
PropFour, Reward $4000
PropFive, Reward $900
Total $25900 (Total budget is $25920.00 at 10%, notice there’s $20 left over)
we’ll use a static block reward of 5 for simplicity:
Block 300,000 - Miner reward 2.47, Masternode payee 2.025 (a total reward of 4.5, when the target reward is 5)
… 17280 blocks pass (1 month) ...
Block 317280 - Miner reward 2.47, PropOne payee 2666.66DASH
Block 317281 - Miner reward 2.47, PropTwo payee 2666.66DASH
Block 317282 - Miner reward 2.47, PropThree payee 1666.66DASH
Block 317283 - Miner reward 2.47, PropFour payee 1333.33DASH
Block 317284 - Miner reward 2.47, PropFive payee 300.00DASH
---
I don't think anyone will have an issue with changing to this system, as it's far superior to the existing one. If you do, simply change from vote from Yea to Nay.