• Forum has been upgraded, all links, images, etc are as they were. Please see Official Announcements for more information

Which masternodes voted and what exactly voted on various proposals (v2)

demo

Well-known member
The previous thread was locked (without any reason given), so I am unable to inform there the dash community about the code changes and the conclusions of my investigation. So I opened this thread, in order to continue to inform.

I did some slight changes into the code, and I take into account only the active proposals of the current budget cycle (and not the cached proposals of old budget cycles that randomly reside into the sentinel database, for reasons unknown to me). It was difficult for me to discover which these active proposals are (sentinel does not give a clear hint on that), so I temporarily rely on dashcentral api in order to list them. This is how the below file was created:


You may notice now an improvement in voteHash (comparing to the previous report) . It is more difficult for the masternodes to obfuscate voteHash (they did this by voting irrelevant votes in the non active proposals that are cached in sentinel) simply because the non active proposals are not taken into account now in the calculation of voteHash!

For example check FinTech-online-radio-R1 proposal again and compare it to the previous report, and you will discover that there is now a different set of voteHashes that may help you more in your task (which is to discover individual operators that are hidding behind the masternodes)

Finally, as always, you may investigate interesting ways of executing queries at the results file [1]
 
Last edited:
the last one was closed as u were taking to yourself again
zero engagement from anybody else except you
let’s see how this here goes - no engagement = talking to self = will close it again !
 
well
u are the know troll around here
he is not ;)
 
An new version of the awesome sensei is available.
https://github.com/jhodges10/sensei
Use it to keep statistics and to discover which masternodes voted and what they voted on various proposals.
The more people keep these statistcis, the better for the community it is!
Let's unveil the habits and ethics of the individuals who hold the future of the community in their hands.
 
Last edited:
@demo4 , @demo5, @demo6 , @demo7, @demois8 were banned and all their messages were tottaly deleted. Among other messages, they also informed in this thread. Although my original @demo account still lags (after posting this message I have to wait 5037 seconds before posting another message !!!!!!!!!!) I ought to (re)inform the community about what the masternodes voted last month. So, against the will of the stupid, the spies, and the rest BOFH / BMFH/ BAFH , here you are:

The Results of 03-05-2018 from dashd daemon. Delays a lot, press the wait javascript to load. You may also download Ziped Version

rendez-vous next month, just before the budget finalization.

21hnyg.jpg

https://archive.is/RJHxA
 
Last edited:
This thread and the previous is useful. It is important to know how centralised the distribution of DASH actually is and when I started looking into the matter I was surprised myself to see just how centralised it actually is. That said everyone has their price and will sell when it is met, we can hope this will re-distribute the funds more effectively in the future.

Why is centralisation of funds important? I think it is important because a concentration of funds to a few entities mean they can control the project through votes and also the price. Anyone thinking of investing in DASH should know that there are many people with over 50K DASH in their control and could dump at any time. Though this isn't a major concern for me, because when I look at those holders, their buy in price is when DASH was $1-$10, if they didn't sell when DASH was over $1k I doubt this bear market will shake them.

Couple of important corrections I need to make hence the purpose of my post.

  • The largest wallet referenced in the previous thread worth a cool 375K DASH split 125K into smaller addresses of about 5K DASH each and SOLD roughly 250K DASH starting in June 2017.
  • The 2nd largest wallet with 66K DASH split into 3 22K DASH addresses, he did not sell as you assumed in late December into the market top.
  • The 3rd largest wallet 55.5K DASH split his loot into smaller addresses of no more than 22K DASH in each.

Whales are always a concern look at the effect the MtGOX whale had and continues to have on the BTC price and DASH is a derivate of BTC, so indeed his selling has contributed to the DASH bear market.

I think the analysis being done in this thread is useful, though some MNOs will find it distasteful at least it is out in a public forum because you can be sure the 'institutional investors' are doing the same research in private and it is the reason WHY they are not buying any crypto.

Oh, one last thing, I absolutely do not agree with any confiscation of funds or HF to do the same. These whales bought into DASH when it was an unknown, they took a risk, this project could have been a failure and it still can fail! Don't be salty because you missed out on <$1 DASH and if anyone is interested in buying some DASH I am sure the price will get even cheper, so get ready to buy and don't complain about MN being too expensive when the next bull market runs.
 
Last edited:
Yes, the github is now 404, can someone from DASH comment on this? What grounds was the repo reported on? I didn't think it was malicious or 'bad' in anyway, it was just aggregating data from the network. Am I missing something here?
 
Yes, the github is now 404, can someone from DASH comment on this? What grounds was the repo reported on? I didn't think it was malicious or 'bad' in anyway, it was just aggregating data from the network. Am I missing something here?

Demo is constantly spamming 230 people with off-topic messages in the dashpay github repo. He has been asked to stop it or his user will get reported to the Github admin team for violating the Github terms of services.

--> https://github.com/dashpay/dash/pull/2083#issuecomment-393590786

As he did not stop his user got reported and Github took the appropriate actions.
 
You deleted what he said, so an independent observer cannot judge whether it was a spam or not.

Could you please post here what demodun said in github?
thank you.
I did not delete what he said, all his comments were deleted due to his account being suspended. It is not my job to keep backups of his posts, here are some excerpts from my email spamfolder:

@UdjinM6 and all the others who agree with his suggestion to put my concerns in https://github.com/dashpay/dips/issues I want to ask you a single question:
Do you expect for me to help improving dash, while at the same time you have ban my 2_years_old/3000_messages account from www.dashtalk.org without even give a public reason for that????

@schinzelh if this is not the place to discuss my ban from dashtalk, where can I discuss it???
The ban occurred after I complained about @codablock who exposes the IP addresses of the masternodes in a permanent undeniable record file into the blockchain.

So please suggest me a place to discuss the ban problem, and do not suggest me to send an e-mail in dashtalk admin, as long as they have banned me WITHOUT GIVING A PUBLIC REASON.

These were posted to https://github.com/dashpay/dash/pull/2083 - which is a pull request and as such only the pull request should be discussed there - not his dashtalk ban.

I repeat: these messages go out to 230 subscribers who are interested in Dash, and not arbitrary discussions about forum bans. If you feel that this is necessary to help your case, I'd suggest to read into "Netiquettes" and how to participate in online communities.
 
Ah OK, thanks @flare I do agree Demo's netiquette does leave a lot to be desired, hopefully he will put forward his thoughts in a more respectful and constructive manner next time and stay on topic. Also, I do think DIPs 2/3/4 are an excellent improvement to DASH, particularly for the SPV wallets. I always wondered why I couldn't IS from my Andriod wallet, now I know it's coming soon. I also agree, an IP address is public info, you can’t hide it and still provide a service, if MNOs are concerned about this they are probably in the wrong business. I expcet TOR is disabled for the same reason IPv6 is - to avoid centralisation.
 
I expcet TOR is disabled for the same reason IPv6 is - to avoid centralisation.
Both are not disabled because of centralisation but for technical reasons: We don't have a working routing of messages between the different connected nodes as of yet. So a IPv4 client is not able to connect to a Tor/IPv6 masternode. And as this live connection is crucial for the mixing we have disabled masternode list entries other than IPv4 to improve mixing experience.
 
Both are not disabled because of centralisation but for technical reasons: We don't have a working routing of messages between the different connected nodes as of yet. So a IPv4 client is not able to connect to a Tor/IPv6 masternode. And as this live connection is crucial for the mixing we have disabled masternode list entries other than IPv4 to improve mixing experience.

That's interesting, so perhaps in the future IPv6 and maybe even TOR connections will be allowed which will greatly improve MN privacy.
 
That's interesting, so perhaps in the future IPv6 and maybe even TOR connections will be allowed which will greatly improve MN privacy.
Yes, as soon as someone finds time to add a routing layer for the masternode network - or keep a node list for each supported network stack. Due to Evolution this is not on our top priorities list though, so any contributions are welcome.
 
Yes, as soon as someone finds time to add a routing layer for the masternode network - or keep a node list for each supported network stack. Due to Evolution this is not on our top priorities list though, so any contributions are welcome.
Who decides the priorities? It is not a priority for you, but it is for me.
Why dont you add this as a proposal in the dash budget system? (5 dash proposal fee)
Or maybe in dashboost? (1 dash proposal fee)
I have only 1,5 dash, and I cannot spend 1 dash in order to add it as a proposal in dashboost. Because if I spend 1 dash, I will have only 0.5 dash and I will lose my voting rights in dashboost. And this is something I do not want. My vote is my soul and I dont want to lose it.

"To him that overcometh will I give to eat of the hidden manna, and will give him a white vote, and in the vote a new name written, which no man knoweth saving he that receiveth it."
 
Last edited:
@demo, Dash is open source. If you or anyone finds it such a priority you can either implement it yourself or pay someone to implement it, post it as a pull request, and see what the feedback is and if it gets merged.
 
The agents entirely deleted my mnowatch repository from the github.com (which is now a microsoft dominated site).
So I am posting here my script, for anyone who is interested in revealing the way the mnos vote.
here you are
Code:
#!/bin/bash
curl -s https://www.dashcentral.org/api/v1/budget > centralproposals_json
cat centralproposals_json | awk -F"\"name" '{for(i=2;i<=NF;i++){{print $i}}}'|cut -f2 -d":"|cut -f1 -d","|sed -e s/\"//g > current_props
echo "" > expired_props

./dash-cli -datadir=/home/src/.dashcore-0.12.2.3 masternodelist addr > masternodelist_addr
./dash-cli -datadir=/home/src/.dashcore-0.12.2.3 masternodelist payee > masternodelist_payee
./dash-cli -datadir=/home/src/.dashcore-0.12.2.3 gobject list > gobject_list
cat gobject_list |grep "{"|grep -v "DataString"|cut -f2 -d"\""|grep -v "{" > proposals
for fn in `cat proposals`; do
./dash-cli -datadir=/home/src/.dashcore-0.12.2.3 gobject getcurrentvotes $fn > "gobject_getcurrentvotes_"$fn
numi=`grep -n "\"Hash\": \""$fn gobject_list|tail -1|cut -f1 -d":"`
numi=`expr $numi - 1`
numip=$numi"p"
prop=`sed -n $numip gobject_list|cut -f4 -d":"|cut -f2 -d"\""|cut -f1 -d"\\\"`
echo $prop

greprop=`grep $prop current_props |wc -c`
echo $greprop
if [ $greprop -gt 1 ]
then

propc=`echo $prop|wc -c`
if [ $propc -gt 1 -a $propc -lt 200 ]
then

cat "gobject_getcurrentvotes_"$fn|grep ABSTAIN:FUNDING|cut -f3 -d"("|cut -f1 -d")"|sed -e s/", "/-/g > "ABSTAIN_"$prop
touch "ABSTAIN_IP_"$prop
for gn in `cat "ABSTAIN_"$prop`; do
addr1=`cat masternodelist_addr|grep $gn\"|cut -f2 -d":"|cut -f2 -d"\""`
echo $addr1 >> "ABSTAIN_IP_"$prop
done
mv "ABSTAIN_IP_"$prop "TMP_ABSTAIN_IP_"$prop
sort "TMP_ABSTAIN_IP_"$prop > "ABSTAIN_IP_"$prop
rm "TMP_ABSTAIN_IP_"$prop
echo "ABS:"`wc -l "ABSTAIN_IP_"$prop|cut -f1 -d" "`
cat "gobject_getcurrentvotes_"$fn|grep NO:FUNDING|cut -f3 -d"("|cut -f1 -d")"|sed -e s/", "/-/g > "NO_"$prop
touch "NO_IP_"$prop
for gn in `cat "NO_"$prop`; do
addr1=`cat masternodelist_addr|grep $gn\"|cut -f2 -d":"|cut -f2 -d"\""`
echo $addr1 >> "NO_IP_"$prop
done
mv "NO_IP_"$prop "TMP_NO_IP_"$prop
sort "TMP_NO_IP_"$prop > "NO_IP_"$prop
rm "TMP_NO_IP_"$prop
echo "NO:"`wc -l "NO_IP_"$prop|cut -f1 -d" "`
cat "gobject_getcurrentvotes_"$fn|grep YES:FUNDING|cut -f3 -d"("|cut -f1 -d")"|sed -e s/", "/-/g > "YES_"$prop
touch "YES_IP_"$prop
for gn in `cat "YES_"$prop`; do
addr1=`cat masternodelist_addr|grep $gn\"|cut -f2 -d":"|cut -f2 -d"\""`
echo $addr1 >> "YES_IP_"$prop
done
mv "YES_IP_"$prop "TMP_YES_IP_"$prop
sort "TMP_YES_IP_"$prop > "YES_IP_"$prop
rm "TMP_YES_IP_"$prop
echo "YES:"`wc -l "YES_IP_"$prop|cut -f1 -d" "`


else
echo "PROPOSAL <"$prop"> not accepted"
fi

else
echo "PROPOSAL <"$prop"> is expired"
echo "PROPOSAL <"$prop"> is expired" >> expired_props
fi

done
echo "Please wait"
cat masternodelist_addr|sed -e s/\"//g|sed -e s/\ //g|grep -v "}"|grep -v "{"|sed -e s/,//g > masternodelist_hash_addr_clear
cat masternodelist_addr|cut -f2 -d":"|cut -f2 -d"\""|grep -v "{"|grep -v "}" > masternodelist_addr_only
sort masternodelist_addr_only > masternodelist_addr_only_sorted

mkdir upload
cp masternodelist_addr_only_sorted ./upload
cp masternodelist_hash_addr_clear ./upload

for fn in `ls *_IP_*`; do
if [ -s $fn ]
then
cp $fn ./upload
fi
done
cd upload

dateis=`date +"%d-%m-%Y"`
filenameis="../the_results_dashd_"$dateis".html"
cat ../jsall2.html|sed -e s/"thedateis"/"$dateis"/g > $filenameis


for gn in `cat masternodelist_hash_addr_clear`; do
MNhashis=`echo $gn|cut -f1 -d":"`
ipis=`echo $gn|cut -f2 -d":"`

yesvotes=`grep -l ^$ipis$ *YES_IP_*|cut -f3- -d"_"`
novotes=`grep -l ^$ipis$ *NO_IP_*|cut -f3- -d"_"`
absvotes=`grep -l ^$ipis$ *ABSTAIN_IP_*|cut -f3- -d"_"`
allvotes=$yesvotes" "$novotes" "$absvotes
hashis=`bc <<<ibase=16\;$(sha1sum <<<$allvotes|tr a-z A-Z)0`
echo "<tr><td class=\"container1\"><div><a target=\"_blank\" href=https://ipinfo.io/"$ipis">"$ipis"</a> "$MNhashis"</div></td><td class=\"container2\"><div>"$yesvotes"</div></td><td class=\"container3\"><div>"$novotes"</div></td><td class=\"container4\"><div>"$absvotes"</div></td><td class=\"container5\"><div>"$hashis"</div></td></tr>" >> $filenameis
echo -n "."
done

echo "
</tbody>
</table>
</body>
</html>
" >> $filenameis

cd ..
filetimeis="upload_"`date +"%m-%d-%Y"`".zip"
zip -r $filetimeis ./upload

filenameiszip="../the_results_dashd_"$dateis".html.zip"
zip $filenameiszip "the_results_dashd_"$dateis".html"

distrfileis="distr_"$dateis".txt"

echo "The first operator includes all people who abstain. All the rest are identified by the way they vote." > $distrfileis
cat the_results_dashd_*.html| cut -f22 -d"<"|cut -f2 -d">"|grep -v [a-z]|grep -v [A-Z]| grep ^[0-9]|grep -v "-"|sort|uniq -c|sed -e s/'^   '/000/g|sed -s s/'000   '/000000/g|sed -e s/'000  '/00000/g|sed -s s/'000 '/0000/g|sort -r|cut -f1 -d" "|uniq -c|sed -e s/" 0"/" operator(s) control(s) "/g|sed -e s/$/" masternode(s)"/g >> $distrfileis

echo "END! "

I ran the script in the current budget cycle, and here you are some statistics


Distribution of MNOs revealed at 30-6-2018
The first operator includes all people who abstain. All the rest are identified by the way they vote.
1 operator(s) control(s) 002456 masternode(s)
1 operator(s) control(s) 000111 masternode(s)
1 operator(s) control(s) 000073 masternode(s)
1 operator(s) control(s) 000072 masternode(s)
1 operator(s) control(s) 000062 masternode(s)
1 operator(s) control(s) 000049 masternode(s)
1 operator(s) control(s) 000047 masternode(s)
1 operator(s) control(s) 000046 masternode(s)
1 operator(s) control(s) 000045 masternode(s)
1 operator(s) control(s) 000044 masternode(s)
1 operator(s) control(s) 000042 masternode(s)
1 operator(s) control(s) 000041 masternode(s)
1 operator(s) control(s) 000039 masternode(s)
1 operator(s) control(s) 000037 masternode(s)
1 operator(s) control(s) 000032 masternode(s)
1 operator(s) control(s) 000031 masternode(s)
1 operator(s) control(s) 000030 masternode(s)
1 operator(s) control(s) 000028 masternode(s)
2 operator(s) control(s) 000025 masternode(s)
1 operator(s) control(s) 000021 masternode(s)
2 operator(s) control(s) 000020 masternode(s)
1 operator(s) control(s) 000019 masternode(s)
3 operator(s) control(s) 000017 masternode(s)
3 operator(s) control(s) 000016 masternode(s)
1 operator(s) control(s) 000015 masternode(s)
2 operator(s) control(s) 000014 masternode(s)
2 operator(s) control(s) 000013 masternode(s)
1 operator(s) control(s) 000012 masternode(s)
5 operator(s) control(s) 000011 masternode(s)
8 operator(s) control(s) 000010 masternode(s)
6 operator(s) control(s) 000009 masternode(s)
4 operator(s) control(s) 000008 masternode(s)
11 operator(s) control(s) 000007 masternode(s)
8 operator(s) control(s) 000006 masternode(s)
24 operator(s) control(s) 000005 masternode(s)
23 operator(s) control(s) 000004 masternode(s)
43 operator(s) control(s) 000003 masternode(s)
105 operator(s) control(s) 000002 masternode(s)
304 operator(s) control(s) 000001 masternode(s)

 
Last edited:
The agents entirely deleted my mnowatch repository from the github.com (which is now a microsoft dominated site).
So I am posting here my script, for anyone who is interested in revealing the way the mnos vote.
here you are


The code snippet posted by @demo doesn't work, it is missing a file ../jsall2.html and is in desperate need of re-factoring. I will have closer look and see if I can't do something with it...
 
Back
Top