If you have a suggestion for parameters to Scrypt that you think would achieve the goal I am open to it. After all, I am not tied to any particular algorithm just the goal of decentralization.
Depends upon how the algorithm is changed every couple of years.
Yes, it's very important to have it setup that the mining algorithm can be changed. Just look at
https://en.bitcoin.it/wiki/Prohibited_changes to see how difficulty this is, if you don't plan a change ahead.
Obviously current hash power would have to 'vote' to move to new a hashing technique.
Current hash power would never vote to give up their power. Therefore it is much better to use proof-of-stake to vote for protocol changes or parameter changes of the network. Anyway, the value of the network ultimately stems from the stakeholders who define the market capitalization of the coin. So they should be the ones who should be able to vote for a change of the mining algorithm. If this isn't defined in the beginning, then it is hard to argue for a change later on, when the coin is running.
So why not code it modular with maybe scrypt (50%) AND hash256 (50%) in the beginning and add some more later on. And use proof-of-stake to vote for the relative contribution.
Suppose back in the days when CPU mining was the majority and GPU mining was just starting to gain traction but still a minority. The CPU miners would all vote to move to something that would keep them in power before the GPU owners could take over. The FPGA developers wouldn't even begin investing any effort. The only way to perform a successful ASIC take-over would be to perform a 51% attack before anyone knew it and then vote to keep yourself in power. Of course, such an attack would immediately undermine the entire currency.
So the CPU users must pro-actively change the hashing algorithm at least once per year to prevent any secret ASIC developments. Combine this with a hash algorithm that doesn't give ASIC as much advantage as SHA256 does (by being memory and computation hard, ie: the point behind the scrypt white paper) and even if ASICs were developed they would not be able to gain a majority of the hashing power quickly nor cheaply.
It still holds, that the ultimate value of the network stems from the stakeholders and they should have the right to vote for protocol changes. The idea to let miners vote for protocol changes is fundamentally flawed. The shareholders should have the ultimate decision about the security of their coins. I really do not see ANY advantage of letting miners vote in comparison to letting shareholders vote.
Compare it with the shareholders of a company. Your proposal is similar as saying some external component supplier of your company should vote for the next component supplier of your company. Instead it makes much more sense to let the shareholders of the company vote for these decisions.
The tragedy (lie) of democracy is that the masses can be manipulated by the rich who control the media and goodies that the masses want. And the rich have the most stake.
My point in my reply upthread is that the developers only get one chance to apply their best design, then the vested interests take form.
I prefer economics-by-design than design-by-popularity which devolves to centralized control.
Of course it is important to have a good design from the beginning on. But as has been stated earlier it is also very important for mining algorithms to be adapted to technological advancements. Furthermore protocol changes are sometimes a really good thing. So I think everyone would agree that it is important to be able to change parameters later on.
Why do you assume miners would be better to make decisions about the network? Why not developers? Or the rich (which is equivalent to PoS)? Anyway, you have to decide from the beginning on how decisions should take place. In the bitcoin network it is clear that all decisions are taken by core developers and to a small degree by miners. I wouldn't argue that it is very bad if developers take some decisions. But I see a huge conflict of interest if miners are the decision makers, because they are neither the ones who have the best technical understanding of the protocol nor do they represent the stakeholders of the coin. Miners are more like external entities who get rewards for their service. As I said, they are like external component suppliers of a company. They shouldn't have a right to vote for changes in the protocol.
On the other hand, if you decide that PoS is used for voting for protocol changes or mining algorithm updates, then you have several benefits:
1) No conflict of interests (especially in regard to mining rewards and network security)
2) Regular users will leave the expert options of their clients untouched and therefore will just vote for the option, that the developer of his client choose to be the best option
3) Automatic check if the userclients do support some of the new features (therefore new features will only be enabled if enough clients do support them)
4) Very flexible, esspecially if you consider that you want to have several Bitshare-blockchains, because each shareholder of a specific blockchain could vote for their desired protocol parameters. Therefore, from the beginning on, it wouldn't make sense to create altcoins of your cryptocurrency. You could just add modules to the core client, and then shareholders of some specific blockchains could vote to enable this specific new feature.
Just think a bit about the implications of the last point! Let's consider Bitshares become really popular. You will have many specialized experts who would like to trade in a very specific framework with some specific network parameters. It would be so much beneficial if they could just use the standard client and create a new subchain, where they are the shareholders, and vote for their desired parameters. The whole ecosystem of Bitshares would hugely benefit, because it would automatically support a wide range of different users:
- Some users might prefer a subchain with high double-spend security so that they will vote for a large percentage of PoW contribution
- Some users might want to take part in a subchain, which has a high block frequency, but they don't care about bandwidth, so they create their own chain with these parameters
- Some users might want to trade in a subchain, where the blocksize is just 100 Kb and others might prefer 1 MB, so they will just move to a corresponding chain which has these parameters set
If bitcoin would have been build with this in mind, it would have a huge advantage in regard to protocol updates and technological and scientific progress. There are currently many altcoins, who try to improve the protocol of bitcoin. But they have no chance to be used just because of the network effect of bitcoin. Although, some of these changes are well tested and understood, it is no possible to change the bitcoin protocol, because there is no democratic decision process implemented. I think this idea is in total agreement with the ideas of bytemaster and charleshoskinson.
I understand, that it is very hard for a developer to give up some control to the users. But it would be beneficial in the long term if it is clearly defined how protocol changes should be introduced. If this is defined, then progress is possible in a very controlled way after the initial launch. In contrast, if you want that miners vote for changes in the mining algorithm, then you will create a deadlock from the beginning on (similar to the inflexible bitcoin mining algorithm).
So if you read my post carefully, I hope you could maybe agree that it is shortsighted to assume that all users will be satisfied in all time with the specific set of parameters of your initial design. I very much prefer a wide range of parameters that could be tested and then the subchains with the best parameters will win. You would make altcoins unneccessary because they could all be incorporated within modules in your software. So the whole ecosystem is more flexible. Thereby you would enable design-by-popularity in contrast to the bitcoin way where you are constrained by economics-by-design.
(*Edited for clarity)