So much debate
I want to make one thing clear: 1 account = 1 vote will never work, no matter what kind of tweaking or scaling we use to limit large holder's voting power. They will simply create more accounts. This is not disputed, correct? In this scenario (1 account = 1 vote) large holders will actually have more power because they can afford to pay more fees to make new accounts than small holders. Setting a time-lock (ie. account has to be active 1440 blocks before voting starts) does not work as well. What is preventing a large holder making 100000 accounts
right now so he can use those 100000 accounts to vote on all future issues (since these accounts are older than 1440 blocks). In any case, in the end, the network will fragment to ~1 billion accounts with 1 NXT each so everyone has the maximum voting power... not ideal.
On the other hand, 1 NXT = 1 vote is the most pure, simplest and non-gameable method that will nearly always vote in the best interest of NXT as a whole. As for the argument that large stakeholders aren't necessarily properly informed to make decisions, that is untrue. If someone has a large stake in NXT, it is guaranteed they will at least do some research before they vote. They will not randomly chose an option that may hurt their holdings. Small stakeholder will not care as much, since he has much less at risk. So in actuality, small stakeholders are the most likely to just randomly vote and pick the one that sounds the best without research.
So far, I have said why I think why large stakeholders will always have NXT's best interest in heart. 1 NXT = 1 vote will also prevent network fragmentation, as there is no incentive to create millions of puppet accounts. But to think on the other side of the coin...
What if we remove this incentive to make puppet accounts?What if we implement a two-tiered voting system? (Sounds like congress...) The "Senate" will comprise of 1 NXT = 1 Vote, and the "House" will comprise of 1 Account = 1 Vote. The poll-maker can set any options he wants (such as: for a very important vote to pass, requires 70% Senate approval and 75% House approval), but ideally, 51% Senate approval and 51% House approval will suffice for a true consensus.
So how will this remove the incentive to make a large amount of puppet accounts? If a large holder decides split his stake up, then he will lose some portion of his stake due to fees, thus reducing his Senate voting power in the process of increasing his house voting power. As the number of accounts increases due to legit new users coming into the system, the stakeholder will have to keep making new accounts to game the House votes. But if he does this, he will be constantly decreasing his Senate voting power and effectively, through fees, increase other's Senate voting power. Every new account he makes, he gives up 1 NXT (fees) + 1 NXT (the forger of the block with his fee) = 2 NXT of voting power in the Senate. So while this won't eliminate puppet accounts completely, it will effectively put a limit on how many accounts a large stakeholder can make. In the future, if we have millions of legitimate users with millions accounts, it will cost the large holders a lot of Senate voting power just to game the House votes.
Still, I don't know if I particularly like this idea, as there will still be
some puppet accounts, and according to game theory, everyone will have to create a certain number of puppet accounts in order to compete. But it is much better than simply 1 Account = 1 Vote. Also, there is the issue of a deadlock, where one of the tiers could have a majority and the other does not. How to solve that?
But that was only one idea. I would support 1 Account = 1 Vote if the proposed system would completely remove incentives to make puppet accounts. Otherwise, the system will be gamed. I would rather have 1 NXT = 1 Vote than millions of accounts with 1 NXT because of 1 Account = 1 Vote.
Which brings me to this:
As previously stated, if you try to put limits on how much stake someone can use to vote than a whale will simply break his stake up into multiple accounts. If you try to say that you get 1 vote per account than fraudsters will make a zillion accounts with one nxt each. I think your judgment may be clouded by what you would like to be the case.
I have a solution that will allow almost complete fairness and can identify accounts being controlled by a singular user/group to change the result.
I think this a perfect time to use weak artificial intelligence algorithms.
I am all ears!
Currently developing the algorithm. It needs multiple voting events to start working.
This is the simplest explanation I can give without a coded application to demonstrate.
additional variable that needs to be added, amount of times an account has voted.
initialvoteWeight = (other variables)(1 / similarity)^2(TotalAccountVotes)
this prevents people from creating a new account each time to vote, or rather it docks them voting power
First vote will be initiated and completed.
"Banks" of accounts that have voted will be created for each option after each vote.
Bank A will always contain the accounts of the winning vote
bankA1[accounts[1-100]] 100 votes + accounts x, y, and z votes.
bankB1[accounts[101-150]] 50 votes
Bank A1 won by 66%
Second vote will commence
"Banks" of accounts that have voted will be created for each option after each vote.
bankA2[accounts[1-75 and 100-109]] 85 votes + accounts x, y, and z votes.
bankB2[accounts[76-99 and 110-150]] 65 votes
Bank A2 won by 56%
third vote will commence
"Banks" of accounts that have voted will be created for each option after each vote.
bankA3[accounts[1-35, 51-75 and 90-150]] 120 votes + accounts x and y votes.
bankB3[accounts[36-50 and 76-89]] 30 votes
BankA3 won by 80%
----
This will be translated into repeat and if statements soon.
if bankA1 contains account[z and x and y] and bankA2 contains account[z and x and y] and bankA3 contains account[z and x and y] set similarity of accounts z, x and y to similarity + 1
similarity[z] = 1
similarity[x] = 1
similarity[y] = 1
Set totalAccountVotes of account[z and x and y] to totalAccountVotes + 1
end if
if bankA1 contains account[x and y] and bankA2 contains account[x and y] and bankA3 contains account[x and y] and bankA4 contains account[x and y]
set similarity to similarity + 1
similarity[z] = 1
similarity[x] = 2
similarity[y] = 2
essentially voting power of z will be 4 times higher than x or y. This is just a rough construct of my idea.
This sounds interesting, a method to vote by account, but removes the incentive to make a ton of new accounts? I'm not sure if I grasp the bottomline of this implementation, can you state in words how this will prevent someone from making a ton of accounts? Lastly, how can you calculate similarity? Can't someone can just put their coins through a mixer/exchange?