Show Posts
|
Pages: « 1 2 3 [4] 5 »
|
definitely big whales
you dont need whales to move this market. a decent sized trout will get that job done. . I wonder if we will pass up Peercoin in a few hours.
|
|
|
Yes, my approach lessens the voting weight of accounts that share similar voting patters. I posted a walkthrough of the methodology a while ago but I guess it flew over people's heads.
votingweight = ( 1 / similarity ) ^ (4/3) * (accountbalance)^(1/3) * (accountage)^2 (timesvoted)^(3/2)
or something along these lines. "similarity" increases as accounts make the same voting choices as other accounts.
timesvoted= amount of times that account number has voted
timesvoted prevents people from creating additional accounts to circumvent the similarity variable
Similarity is very easily defeated by voting randomly on issues which doesn't concern the real voter. You're welcome to try and solve this enigma with me . Realistically, it would be such a phenomenal pain in the ass to game the system that I doubt anyone would try.
|
|
|
Let's do it. Too much talk already. We should try different approaches and see which one is best, imho. But obviously nothing will satisfy all people. So let's go with something workable for the majority.
What I have so far for the learning algorithm. $optionOne = $_POST['option1'] $optionTwo= $_POST['option2']
$TotalIssuesVotedOn = file_get_contents("MasterVoteCount.txt");
$DataOne = unserialize(file_get_contents($optionOne . ".txt")); $VotesOne = array_sum($DataOne['weight']) ;
$DataTwo = unserialize(file_get_contents($optionTwo . ".txt")); $VotesTwo = array_sum($DataTwo['weight'])
if($VotesTwo < $VotesOne) { echo "Option One Wins"; $split = 1 - $VotesOne / ($VotesTwo + $VotesOne); $BankA = $DataOne['account']; $newData = serialize($BankA); file_put_contents("BankA" . $TotalIssuesVotedOn . ".txt", $newData); } else { $split = 1 - $VotesTwo / ($VotesTwo + $VotesOne); echo "Option Two Wins"; $BankA = $DataTwo['account']; $newData = serialize($BankA); file_put_contents("BankA" . $TotalIssuesVotedOn . ".txt", $newData); }
$splitfilename = "Issue" . "$TotalIssuesVotedOn" . "/split.txt";
file_put_contents($splitfilename, $split); file_put_contents("MasterVoteCount.txt", $TotalIssuesVotedOn);
if($TotalIssuesVotedOn < 4) { echo "completed"; } else { $var_a = $TotalIssuesVotedOn - 1 $var_b = $TotalIssuesVotedOn - 2 $var_c = $TotalIssuesVotedOn - 3
$splitA = file_get_contents("Issue" . "$TotalIssuesVotedOn" . "/split.txt"); $splitB = file_get_contents("Issue" . "$var_a" . "/split.txt"); $splitC = file_get_contents("Issue" . "$var_b" . "/split.txt"); $splitD = file_get_contents("Issue" . "$var_c" . "/split.txt");
$Bank1 = file_get_contents("BankA" . $TotalIssuesVotedOn . ".txt"); $Bank2 = file_get_contents("BankA" . $var_a . ".txt"); $Bank3 = file_get_contents("BankA" . $var_b . ".txt"); $Bank4 = file_get_contents("BankA" . $var_c . ".txt");
$AllBanks = array( $Bank1, $Bank2, $Bank3, $Bank4 );
$SimilarAccounts = call_user_func_array('array_intersect',$AllBanks);
$var_d = array_sum($SimilarAccounts);
$similarityAdded = .1 / ($splitA * $splitB * $splitC * $splitD);
$var_e = 0; while ($var_e < ($var_d - 1)) { $similarityModifier = file_get_contents($SimilarAccounts[$var_e] . "/similarity.txt"); $similarityModifier = $similarityModifier + $similarityAdded; file_put_contents($SimilarAccounts[$var_e] . "/similarity.txt", $similarityModifier); $var_e = $var_e + 1; } } $TotalIssuesVotedOn = $TotalIssuesVotedOn + 1;
And for the addition of votes... $accountNumber = $_POST['account'] $option = $_POST['option']
$TotalIssuesVotedOn = file_get_contents("MasterVoteCount.txt"); $similarityModifier = file_get_contents($accountNumber . "/similarity.txt"); $accountBalance = file_get_contents($accountNumber . "/balance.txt"); $accountAge = file_get_contents($accountNumber . "/age.txt");
$nxtAge = something goes here;
<!-- Times voted is retrieved and updated ---!> $filename = "$accountNumber" . "/timesvoted.txt"; if (file_exists($filename)) {
$oldData = file_get_contents($filename); $newData = $oldData + 1; file_put_contents($filename, $newData); } else { $newData = 1; file_put_contents($filename, $newData); } <!-- Times voted is retrieved and updated ---!>
$TimesVoted = file_get_contents("$accountNumber" . "/timesvoted.txt"); $TotalIssuesVotedOn = file_get_contents("MasterVoteCount.txt");
<!-- Account is added to vote ---!> $votes = ''; $filename = $TotalIssuesVotedOn . "/" . $option . "votes.txt"; if (file_exists($filename)) {
$oldData = unserialize(file_get_contents($filename)); $oldData = array(); $oldData['account'] = $accountNumber; $oldData['weight'] = ( 1 / ( $similarityModifier + 1 ) ) ^ (5/4) * ( $accountAge ) ^ 2 ( $accountBalance ) ^ (1/3) $newData = serialize($oldData); file_put_contents($filename, $newData); } else { $oldData = array(); $oldData['account'] = $accountNumber; $oldData['weight'] = ( 1 / ( $similarityModifier + 1 ) ) ^ (5/4) * ( $accountAge ) ^ 2 ( $accountBalance ) ^ (1/3) $newData = serialize($oldData); file_put_contents($filename, $newData); } <!-- Account is added to vote ---!>
|
|
|
Nothing wrong with that but I was proposing that we set-up a full voting system, to test out various voting concepts, such as 1NXT=1vote or 1 account= 1 vote before applying the knowledge gained there to the full VS, when it gets implemented. Is the VS actually going to be up and running in one week?
And coming back to the point of this whole debate: how are votes going to be counted?
BTW>>>>NXT 2 the moon, looks like its about to hit the magic 0.000100000 on DGEX
I'm setting up my version in PHP, I can host it on a server that I use for testing projects. The 1nxt=1 vote and 1 account = 1 vote would be really easy to code as well. I just discovered the array_intersect(); function in PHP .
|
|
|
I like it. It removes the incentive to make multiple accounts to vote almost completely. Although, I assume that most people here vote in the best interest of NXT, so wouldn't a lot of people get their voting power reduced just because they always vote in the best interest of NXT (and thus are very likely to chose the same option)? Yep, so if 90% of people choose option a on the first deliberation 90% choose b on the second and 90% choose c on the third b, y and z's similarity in the above example will be increased by .1/ ((.9 )*( .9)*( .9)) P 1-3^3 we could even set it to increase by .1/((P 1+D)(P 2+D)(P 3+D)) where P is the winning percentage and D is the all time average deviation by which the vote is split. Maybe this is a fringe case and not common at all? This seems to work better in multi-option polls, where it is much less likely for two individuals to coincide often. Also, this scenario just came to mind: Suppose someone creates 1000 accounts for the purpose of voting. Can't he game this system by randomly voting on issues he doesn't care about (reducing similarity greatly and not really influencing the vote in anyway) and when one he cares about does come up, he points all 1000 accounts at the option he wants? Because of his previous random voting pattern, the system will not be able to detect that he is gaming this particular vote.
I guess it would have to be saved for critical/important issues. I think I can find a way around this given some time. We would also have to maintain a separate ledger to hold the records of all the accounts that voted, correct? (Or use AM, but at 1000 bytes per message, the number of messages required would increase over time as more and more accounts vote) We could run a parallel blockchain (secured by the NXT network) that only records matters dealing with the voting system. Voting would cost min fee (1 NXT), and these payments will be paid out to forgers, encouraging them to take on the second blockchain.
I think a parallel blockchain for voting would be amazing!
|
|
|
Why is not anyone creating localnxtcoin.com or localnxt.com? Domain name is not even being squatted? This can be our first worldwide nxt/fiat gateway.Just like https://localbitcoins.com/It should be easy to implement with automated escrow service. And an internal rating system. If you can create an EXCHANGE, i'm pretty sure you can handle "localnxt". Dev should set a nice bounty for this. Agreed? Agree, that sounds like a phenomenal 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?
It won't prevent anyone from making a ton of new accounts, however when they use those accounts to vote for one option the accounts that appear to be participating in a organized manner will have their similarity increased,decreasing voting weight. similarity starts as one for all accounts Vote issue 1 is split by a 60% 40% vote statistically a voter chosen at random will have a 60% chance of choosing the winning outcome, a person with multiple accounts has a higher probability initially. Vote issue 2 is split by a 60% 40% vote Vote issue 3 is split by a 60% 40% vote BankA x represents accounts that voted and won. If BankA 1 contains [accounts a, b, c, d, x, y and z] and BankA 2 contains [accounts b, c, y and z] and BankA 3 contains [accounts a, b, y and z] and b, y and z's similarity will be increased by .1/ (.216), .216 being the probability of that occurring naturally (.6^3). As the probability goes to zero the similarity is increased exponentially. The mixer/exchange problem is circumvented by adding the timesVoted variable, the more times an account has cast a vote for an issue the more weight his vote will have exponentially. So if you don't vote and try to game the system by varying votes between accounts you will be left in the dust by people consistently voting. An account recently made will have 25% the voting power of a account that has voted once already.
|
|
|
So you've decided the font size will give more weight to your idea?
People want a solution to A, I provide a solution to A, people ask for a solution to A without responding to my solution. Do you see how this is annoying? Can you find an issue with it? Why shouldn't this work? It filters out accounts made to control voting outcome and weights votes based on variables that people seem to be comfortable with. If you guys don't want to use it, or can find a flaw, that's absolutely fine.
|
|
|
please explain why does a bigger wallet has to have more saying than a small wallet.
please provide ONE mathematical model, that would not be gamed in favor of the big stakeholders. do it and we will be all ears! votingweight = ( 1 / similarity ) ^ (4/3) * (accountbalance)^(1/3) * (accountage)^2 (timesvoted)^(3/2)
gamed in favor of Account Age, previous amount of votes cast on issues, and moderately by account balance.
Similarity prevents a large account being split into smaller accounts.
I will explain similarity if anyone is interested...
|
|
|
How about a hybrid system?
Merging both systems and giving them 50% power.
Number of "Yes" Votes/ Total Number of Votes = % Yes Votes Number of NXT Voting "Yes" / Total Number of NXT Voting = % Yes NXT Votes [% Yes Votes + % Yes NXT Votes] / 2 = Final % Yes Votes
On first glance it makes sense, need to think about it. Creating thousands of accounts to push through opinions might be reduced this way. GAHHHH I've posted a solution to this four times already. we are trying to find a way to verify the unique identity of a voter in an anonymous environment. does that strike as odd to anyone else?
Yes, my approach lessens the voting weight of accounts that share similar voting patters. I posted a walkthrough of the methodology a while ago but I guess it flew over people's heads. votingweight = ( 1 / similarity ) ^ (4/3) * (accountbalance)^(1/3) * (accountage)^2 (timesvoted)^(3/2) or something along these lines. "similarity" increases as accounts make the same voting choices as other accounts. timesvoted= amount of times that account number has voted timesvoted prevents people from creating additional accounts to circumvent the similarity variable
|
|
|
As a stakeholder from day 1 I have no real issue on how to vote. That said I cannot decide who is right or wrong here so it is a vicious cycle!
How to cut the Gordian knot?
Artificial intelligence? I'm working on the code in PHP as we speak. $accountNumber = $_POST['account'] $option = $_POST['option']
$similarityModifier = file_get_contents($accountNumber . "/similarity.txt"); $accountBalance = file_get_contents($accountNumber . "/balance.txt"); $accountAge = file_get_contents($accountNumber . "/age.txt"); $nxtAge = something goes here;
<!-- Times voted is retrieved and updated ---!> $filename = "$accountNumber" . "/timesvoted.txt"; if (file_exists($filename)) {
$oldData = file_get_contents($filename); $newData = $oldData + 1; file_put_contents($filename, $newData); } else { $newData = 1;
file_put_contents($filename, $newData); } <!-- Times voted is retrieved and updated ---!>
<!-- Account is added to vote ---!> $votes = ''; $filename = "$option.txt"; if (file_exists($filename)) {
$oldData = unserialize(file_get_contents($filename)); $oldData = array(); $oldData['account'] = $accountNumber; $oldData['weight'] = ( 1 / ( $similarityModifier + 1 ) ) ^ (5/4) * ( $accountAge ) ^ 2 ( $accountBalance ) ^ (1/3) $newData = serialize($oldData); file_put_contents($filename, $newData); } else { $oldData = array(); $oldData['account'] = $accountNumber; $oldData['weight'] = ( 1 / ( $similarityModifier + 1 ) ) ^ (5/4) * ( $accountAge ) ^ 2 ( $accountBalance ) ^ (1/3) $newData = serialize($oldData); file_put_contents($filename, $newData); } <!-- Account is added to vote ---!>
echo $votes; $optionOne = $_POST['option1'] $optionTwo= $_POST['option1']
$DataOne = unserialize(file_get_contents("$optionOne.txt"));
$VotesOne = array_sum($DataOne['weight']) ;
$DataTwo = unserialize(file_get_contents("$optionTwo.txt"));
$VotesTwo = array_sum($DataTwo['weight'])
if($VotesTwo < $VotesOne){ echo "Option One Wins"; $BankA = $DataOne['account']; } } else echo "Option Two Wins"; $BankA = $DataTwo['account']; }
To be continued...
|
|
|
I'm honestly fine with this. One account = one vote. It's not going to prevent people from making 8,000 accounts, but that will be a lot of time invested for them if each account has to be funded.
I have a solution... 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.[/color]
|
|
|
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.
|
|
|
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.
|
|
|
This voting math is implemented and 2 people just bought 10.000.000 NXT each. One of them is keeping all NXT in his one account. Voting power: 100 The other on makes 100 accounts with 100.000 NXT each. Voting Power: 4641
Basically he payed 100 NXT fees, to increase his voting power by 4741% Does that really sound fair? I think not.
I will try to find a way around this . I just wanted start the process of developing a mathematical formula for voting. I'm going to continue to move things around and will post updates for input. +1 we just have to accept that wealthier individuals are going to have more voting power. dont try to fight it. that issue doesnt need to be taken into consideration by the person making the voting system. it needs to be taken in to consideration by the person creating the ballots.
As someone with millions of NXT, I disagree. I think mathematical equations hold the answer to equality.
|
|
|
Working on the math behind the voting system. What variables do you think should be included to determine voting power? So far I have (This isn't in any known language, just organized in a way that people should be able to understand) variables that are added to vote weight
account size account age
Hypothetically let lastblock ==1400 account creation[0]== 1400 account creation[1]== 700 account creation[2]== 100
accountSize[0]== 1,00,000 accountSize[1]== 500,000 accountSize[2]== 250,000
Let relativeAge = (lastBlock) / (accountCreation) '
therefore : relativeAge[0]= 1 relativeAge[1]= 2 relativeAge[2]=14
Let fairWeight = (accountSize)^(1/3)
therefore : fairWeight[0]= 63 fairWeight[1]= 51 fairWeight[2]=41
votingPower = (relativeAge)*(fairWeight)
votingPower[0] = 63 votingPower[1] = 102 votingPower[2] = 574
|
|
|
I can code a client by the end of today for macs.
Ok. Let me check my schedule... 20th - Implement mining in Lakshmi 21st - Test JS-implementations of NRS crypto algo, deploy NRS with Asset Exchange to the testnet 22nd - Resolve some issues assigned to me in Jira 23rd - Implement transaction handling in Lakshmi 24th - Review Account Control code 25th - Fix bugs in Account Control code 26th - Day-off Well, I could do VS review on 26th, then bug fixes and testing... That actually works perfectly for me, I have the 26th off too.
|
|
|
We don't have a client is the code ready? API?
maybe wesley can create a workaround till the client is there.
No client. API contains only 3 requests. I can code a client by the end of today for macs.
|
|
|
Probably best to have people vote with tokens and give their votes weight proportional to the stake. The advantage here is that whales will care more about the good of the network than profiting off some small time scam. So we can almost certainly count on the whales to vote with everyones best interest at heart.
I agree 100%. See my above post . We should vote based on account only but there would be qualifications for eligible accounts: 1. seniority of accounts - have to be created before 1000 block for example 2. have a certain amount of NXT such as 1000. Let me emphasize again: we can't have a rich-biased system in the open source community. Not going to survive. Ok, this makes sense. Wouldn't want graviton to be able to swing every vote . Is there a way to call the maturity of an account? EDIT: Also, is there a server open for API calls that is already up and running?
|
|
|
Probably best to have people vote with tokens and give their votes weight proportional to the stake. The advantage here is that whales will care more about the good of the network than profiting off some small time scam. So we can almost certainly count on the whales to vote with everyones best interest at heart.
I agree 100%. See my above post .
|
|
|
|