Author

Topic: [ANN][DASH] Dash (dash.org) | First Self-Funding Self-Governing Crypto Currency - page 2134. (Read 9723814 times)

legendary
Activity: 3066
Merit: 1188
- I believe most masternode operators use a program called Putty to maintain/update their masternodes. Since, I'm on a mac I found this: http://brew.sh/ and http://brewformulas.org/Putty

I'm on a Mac and I just use the Mac's own Terminal which works superb.

hero member
Activity: 616
Merit: 501


You can pay for a VPS (server), not a VPN.

Choose your favorite from here:

http://lowendbox.com/

A masternode at home with a dynamic IP will be most decentralised and fun ;-)
full member
Activity: 172
Merit: 100
Quorum Based Masternode Payment System – Eliminating the reference node

Dash v12 promises to include the first fully decentralized full node incentive system that will pay in a regular and fair way to all participating full nodes on the Dash network. This means there will no longer be a reference node that helps the network pay the correct masternode and keep the payments regular for everyone.  
I thought we should take a moment and think about how far we have come, regular payment decentralization has been maybe the hardest issue to tackle and represents the crowning of the Dash model. It means you can finally have a two tier network that is self-sustainable and that incentivizes participants in a fair way.  
When we first started dealing with this issue we had two fork events that were both traumatic but also very educational for the development team and the community. Out of those events we developed the spork technique of releasing new features and mainnet data on the issues that prevented the fully decentralized payment solution to work. After that we continued with random payments that would even out over time or over a larger number of nodes but that could be an issue for people that had especially unlucky nodes. So you could have situations in which people providing the same service were not equally compensated which was an axiomatic issue for the network as that incentive model is important for the long term prospects of the project over which many services like enhanced privacy, instant transaction confirmation, scalability and transaction abbreviation are founded.

We then established a reference node that guaranteed even payments across all participants but introduced an element of centralization. Not the type of centralization that would put the network in danger, since if the reference node was taken out, the system would just go back to random payments. Nevertheless, it was clearly a pending issue, waiting to be resolved, as sustained, even and fair payments would boost investor’s confidence and consolidate the Dash model as a mature, long term viable solution to many crypto issues, e.g. confirmation times, fungibility, scalability, etc.


Quote
Description of the new  Payment process(as described by Evan):

In the new model, each block a random selection of 10 masternodes are elected to tell the network who should get paid. This is computed using the masternode input hashes for the first payment, then after a last payment is known a valid masternode with the longest wait time is selected.

Selection Algorithm:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternodeman.cpp#L368

Masternode Selection and Broadcast:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L460

Block Validation:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L280

Consensus disagreements are handled by the block validation code. After a period of time, the network should form complete consensus about who is supposed to get paid on which blocks. If there’s a disagreement, multiple payees per block can be valid. After the whole masternode network has been paid, only 1 payee should be valid each block. This gives us a pretty robust system that’s quorum based instead of blockchain based, so we don’t have to keep a complete history, but yet it’s just as secure.

Version 12 is currently on private testing by the core developers. Public testing should open soon, within the next two weeks.  Let’s all get together on testnet and make sure we help the dev team do a very thorough job, this version includes big and important changes for Dash. In my opinion, eliminating the reference node and implementing the decentralized management and budgeting system will open new avenues of development for Dash that no other currency has had since Bitcoin.  I am proud to be part of this project lets continue innovating and pushing forward the boundaries of digital currency.

great post!
sr. member
Activity: 1708
Merit: 295
https://bitlist.co
My Raspberry Pi 2 is arriving this Wednesday and I'll be setting it up on the 1 external ip that I have on my home network. This is going to be a learning experience, since my background isn't in computers.

WHAT I'VE LEARNED SO FAR

- Every Masternode runs on it's own external ip and on port 9999. Most home networks only have 1 external ip, sometimes it's static but most of the time it changes. Every masternode needs to be on a static ip.

- In order to run more than 1 masternode you will need to pay for more external ips. Most Masternode owners buy these external ips from companies that can also host the masternode on their own servers. It's usually $5 per month for this service.

Questions

- I see that VPN services offer to host in many different countries. If I'm in Australia, should I look for a VPN service near me to host the masternode? Or could I host it in the USA?

- Has anyone here hosted more than 1 masternode on their home network? If so, how does it work?

- In layman terms, how does hosting a masternode on a VPN service actually work? Does my wallet on my computer always have to be connected to the internet for the masternode to see my 1000 DASH? Can I use 1 wallet to host multiple masternodes? Are VPN services reliable, do they have 100% uptime? Is it safe? Can they steal my DASH?

- I believe most masternode operators use a program called Putty to maintain/update their masternodes. Since, I'm on a mac I found this: http://brew.sh/ and http://brewformulas.org/Putty

- Is Goldenfrog a good VPN? https://www.goldenfrog.com/vyprvpn
legendary
Activity: 1092
Merit: 1000
Quorum Based Masternode Payment System – Eliminating the reference node

Dash v12 promises to include the first fully decentralized full node incentive system that will pay in a regular and fair way to all participating full nodes on the Dash network. This means there will no longer be a reference node that helps the network pay the correct masternode and keep the payments regular for everyone.  
I thought we should take a moment and think about how far we have come, regular payment decentralization has been maybe the hardest issue to tackle and represents the crowning of the Dash model. It means you can finally have a two tier network that is self-sustainable and that incentivizes participants in a fair way.  
When we first started dealing with this issue we had two fork events that were both traumatic but also very educational for the development team and the community. Out of those events we developed the spork technique of releasing new features and mainnet data on the issues that prevented the fully decentralized payment solution to work. After that we continued with random payments that would even out over time or over a larger number of nodes but that could be an issue for people that had especially unlucky nodes. So you could have situations in which people providing the same service were not equally compensated which was an axiomatic issue for the network as that incentive model is important for the long term prospects of the project over which many services like enhanced privacy, instant transaction confirmation, scalability and transaction abbreviation are founded.

We then established a reference node that guaranteed even payments across all participants but introduced an element of centralization. Not the type of centralization that would put the network in danger, since if the reference node was taken out, the system would just go back to random payments. Nevertheless, it was clearly a pending issue, waiting to be resolved, as sustained, even and fair payments would boost investor’s confidence and consolidate the Dash model as a mature, long term viable solution to many crypto issues, e.g. confirmation times, fungibility, scalability, etc.


Quote
Description of the new  Payment process(as described by Evan):

In the new model, each block a random selection of 10 masternodes are elected to tell the network who should get paid. This is computed using the masternode input hashes for the first payment, then after a last payment is known a valid masternode with the longest wait time is selected.

Selection Algorithm:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternodeman.cpp#L368

Masternode Selection and Broadcast:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L460

Block Validation:
https://github.com/dashpay/dash/blob/v0.12.0.x/src/masternode-payments.cpp#L280

Consensus disagreements are handled by the block validation code. After a period of time, the network should form complete consensus about who is supposed to get paid on which blocks. If there’s a disagreement, multiple payees per block can be valid. After the whole masternode network has been paid, only 1 payee should be valid each block. This gives us a pretty robust system that’s quorum based instead of blockchain based, so we don’t have to keep a complete history, but yet it’s just as secure.

Version 12 is currently on private testing by the core developers. Public testing should open soon, within the next two weeks.  Let’s all get together on testnet and make sure we help the dev team do a very thorough job, this version includes big and important changes for Dash. In my opinion, eliminating the reference node and implementing the decentralized management and budgeting system will open new avenues of development for Dash that no other currency has had since Bitcoin.  I am proud to be part of this project lets continue innovating and pushing forward the boundaries of digital currency.
hero member
Activity: 560
Merit: 500
last block 36 min ago, whooot?

edit: we are back on track

variance is a bitch!
sr. member
Activity: 436
Merit: 250
last block 36 min ago, whooot?

edit: we are back on track
legendary
Activity: 1288
Merit: 1000
I love yours -Amber Alerts- but this one even much more...
sr. member
Activity: 478
Merit: 250
Will we have Dash wallet for iOS on the time of releasing the iOS 9?
legendary
Activity: 3066
Merit: 1188

*********** Amber Alert ************

 • Dash market consolidation beginning to establish itself with creeping certainty.

 • Ask liquidity thinning out on all exchanges, Finnex indicating only 3-digit supply up to 15.

 • Strengthening long-term cup & handle signal crystallising with each passing week.

 • Project fundamentals now well beyond "living room hobby zone" and into industrial territory with the arrival of decentralized governance by blockchain, multilingual expansion, strategic brand diffusion into Russia & China, ongoing mobile infrastructure development and the consolidation of the masternode network, now well on the way to 3000 full nodes

• Project has successfully fielded a sustained troll attack of 5 month duration which had as much impact as a fried egg launched at a nuclear submarine because Dash has won the arguments that endorse its technical policies and priorities

• Project has successfully fielded competitive pumps of up to 100% in an attempt to suppress relative marketcap which simply sprang straight back into place due to by now well compressed value and market buoyancy

All indicators and fundamentals starting to look interesting.


sr. member
Activity: 434
Merit: 250
Quantum entangled and jump drive assisted messages
For god sakes, can someone dump please ?
I dare you, go on ...

Cmon, get serious you need to at least double dare them.


I was saving some ammo, one nudge at a time Grin

This is how the opposition do it,
http://www.theguardian.com/public-leaders-network/2014/jun/01/nudge-unit-behavioural-insights-team-conference
full member
Activity: 163
Merit: 100
For god sakes, can someone dump please ?
I dare you, go on ...

Cmon, get serious you need to at least double dare them.
sr. member
Activity: 434
Merit: 250
Quantum entangled and jump drive assisted messages
For god sakes, can someone dump please ?
I dare you, go on ...
sr. member
Activity: 434
Merit: 250
Quantum entangled and jump drive assisted messages
love it :-)

Haha, what my crappy simple little stupid script can lead to!  Excellent work!

I enjoy watching you all work together, keep it up  Cool
member
Activity: 78
Merit: 10
More node status script hacking.

Hope it proves useful/instructional to somebody.

Also put it on github https://github.com/moocowmoo/check_mn_health

Enjoy!



Code:
#!/bin/bash

# simple masternode health checker
# run on masternode
# moocowmoo -- [email protected] -- XmoocowYfrPKUR6p6M5aJZdVntQe71irCX

# -----

C_RED="\e[31m";
C_YELLOW="\e[33m";
C_GREEN="\e[32m";
C_NORM="\e[0m";

# -----

DASH_CLI=''
if   [ -e ./dash-cli ];          then DASH_CLI='./dash-cli';
elif [ -e ~/.dash/dash-cli ] ;   then DASH_CLI='~/.dash/dash-cli';
elif [ ! -z `which dash-cli` ] ; then DASH_CLI=`which dash-cli`;
fi
if [ -z $DASH_CLI ]; then
    echo "cannot find dash-cli in current directory, ~/.dash, or \$PATH";
    exit;
fi

echo -en "${C_YELLOW}collecting info... ";

# -----

DASH_RUNNING=`ps --no-header \`cat ~/.dash/dashd.pid\` | wc -l`;
DASH_LISTENING=`netstat -nat | grep LIST | grep 9999 | wc -l`;
DASH_CONNECTIONS=`netstat -nat | grep ESTA | grep 9999 | wc -l`;
DASH_CURRENT_BLOCK=`$DASH_CLI getblockcount`;
DASH_GETINFO=`$DASH_CLI getinfo`;

# -----

WEB_MNIP=`wget -qO- http://ipecho.net/plain`;
WEB_BLOCK_COUNT=`wget -qO- https://chainz.cryptoid.info/dash/api.dws?q=getblockcount`;

# -----

DASH_MN_STARTED=`$DASH_CLI masternode debug | grep started | wc -l`
DASH_MN_VISIBLE=`$DASH_CLI masternode list | grep $WEB_MNIP | wc -l`
DASH_MN_LIST=`$DASH_CLI masternode list`
DASH_MN_POSE=`$DASH_CLI masternode list pose  | grep $WEB_MNIP | awk '{print $3}' | sed 's/[^0-9]//g'`
DASH_MN_VOTES=`$DASH_CLI masternode list votes`

# -----

if [ $(($WEB_BLOCK_COUNT - 2)) -lt $DASH_CURRENT_BLOCK ]; then
    DASH_CURRENT=1
fi

if [ $DASH_MN_POSE -lt 2 ]; then
    DASH_MN_HEALTHY=1
fi

DASH_MN_ENABLED=$(echo "$DASH_MN_LIST" | grep -c ENABLED)
DASH_MN_UNHEALTHY=$(echo "$DASH_MN_LIST" | grep -c POS_ERROR)
DASH_MN_EXPIRED=$(echo "$DASH_MN_LIST" | grep -c EXPIRED)
DASH_MN_TOTAL=$(( $DASH_MN_ENABLED + $DASH_MN_UNHEALTHY ))

DASH_VERSION="v"$(echo "$DASH_GETINFO" | grep '"version' | sed -e 's/[^0-9]//g' | sed -e 's/\(..\)/\1\./g' | sed -e 's/\.$//')

echo -e "${C_GREEN}DONE${C_NORM}"

# -----

TEXT_RUNNING="${C_RED}NOT-RUNNING${C_NORM}";
TEXT_LISTENING="${C_RED}NOT-LISTENING${C_NORM}";
TEXT_CURRENT="${C_RED}NOT-SYNCED${C_NORM}";
TEXT_ENABLED="${C_RED}NOT-STARTED${C_NORM}";
TEXT_VISIBLE="${C_RED}NOT-VISIBLE${C_NORM}";
TEXT_HEALTHY="${C_RED}NOT-HEALTHY${C_NORM}";

if [ $DASH_RUNNING   -gt 0 ]; then TEXT_RUNNING="${C_GREEN}RUNNING${C_NORM}"; fi
if [ $DASH_LISTENING -gt 0 ]; then TEXT_LISTENING="${C_GREEN}LISTENING${C_NORM}"; fi
if [ $DASH_CURRENT   -gt 0 ]; then TEXT_CURRENT="${C_GREEN}CURRENT${C_NORM}"; fi

if [ $DASH_MN_STARTED -gt 0 ]; then TEXT_ENABLED="${C_GREEN}STARTED${C_NORM}"; fi
if [ $DASH_MN_VISIBLE -gt 0 ]; then TEXT_VISIBLE="${C_GREEN}VISIBLE${C_NORM}"; fi
if [ $DASH_MN_HEALTHY -gt 0 ]; then TEXT_HEALTHY="${C_GREEN}HEALTHY${C_NORM}"; fi

# -----

echo -e "\n ----"

echo -e "      dashd: $TEXT_RUNNING $TEXT_LISTENING $TEXT_CURRENT"
echo -e " masternode: $TEXT_ENABLED $TEXT_VISIBLE   $TEXT_HEALTHY"

echo -e " ----"

echo "   instance information"
echo "     IP Address         $WEB_MNIP"
echo "     dashd version      $DASH_VERSION"
echo "     dashd connections  $DASH_CONNECTIONS"
echo "     service score      $DASH_MN_POSE"
echo "     dashd last block   $DASH_CURRENT_BLOCK"
echo "     chainz last block  $WEB_BLOCK_COUNT"
echo "     masternode total   $DASH_MN_TOTAL"
echo "     masternode healthy $DASH_MN_ENABLED"

echo -e " ----"

echo "   current vote counts"
echo "                   YEA: $(echo "$DASH_MN_VOTES" | grep -c YEA)"
echo "                   NAY: $(echo "$DASH_MN_VOTES" | grep -c NAY)"
echo "               ABSTAIN: $(echo "$DASH_MN_VOTES" | grep -c ABSTAIN)"
echo "             this vote: $(echo "$DASH_MN_VOTES" | grep $WEB_MNIP | awk '{print $3}' | sed -e 's/[",]//g')"

# -----

exit;



love it :-)

Haha, what my crappy simple little stupid script can lead to!  Excellent work!
sr. member
Activity: 263
Merit: 250
bovine quadruped, professional loafer, dash dev
More node status script hacking.

Hope it proves useful/instructional to somebody.

Also put it on github https://github.com/moocowmoo/check_mn_health

Enjoy!



Code:
#!/bin/bash

# simple masternode health checker
# run on masternode
# moocowmoo -- [email protected] -- XmoocowYfrPKUR6p6M5aJZdVntQe71irCX

# -----

C_RED="\e[31m";
C_YELLOW="\e[33m";
C_GREEN="\e[32m";
C_NORM="\e[0m";

# -----

DASH_CLI=''
if   [ -e ./dash-cli ];          then DASH_CLI='./dash-cli';
elif [ -e ~/.dash/dash-cli ] ;   then DASH_CLI='~/.dash/dash-cli';
elif [ ! -z `which dash-cli` ] ; then DASH_CLI=`which dash-cli`;
fi
if [ -z $DASH_CLI ]; then
    echo "cannot find dash-cli in current directory, ~/.dash, or \$PATH";
    exit;
fi

echo -en "${C_YELLOW}collecting info... ";

# -----

DASH_RUNNING=`ps --no-header \`cat ~/.dash/dashd.pid\` | wc -l`;
DASH_LISTENING=`netstat -nat | grep LIST | grep 9999 | wc -l`;
DASH_CONNECTIONS=`netstat -nat | grep ESTA | grep 9999 | wc -l`;
DASH_CURRENT_BLOCK=`$DASH_CLI getblockcount`;
DASH_GETINFO=`$DASH_CLI getinfo`;

# -----

WEB_MNIP=`wget -qO- http://ipecho.net/plain`;
WEB_BLOCK_COUNT=`wget -qO- https://chainz.cryptoid.info/dash/api.dws?q=getblockcount`;

# -----

DASH_MN_STARTED=`$DASH_CLI masternode debug | grep started | wc -l`
DASH_MN_VISIBLE=`$DASH_CLI masternode list | grep $WEB_MNIP | wc -l`
DASH_MN_LIST=`$DASH_CLI masternode list`
DASH_MN_POSE=`$DASH_CLI masternode list pose  | grep $WEB_MNIP | awk '{print $3}' | sed 's/[^0-9]//g'`
DASH_MN_VOTES=`$DASH_CLI masternode list votes`

# -----

if [ $(($WEB_BLOCK_COUNT - 2)) -lt $DASH_CURRENT_BLOCK ]; then
    DASH_CURRENT=1
fi

if [ $DASH_MN_POSE -lt 2 ]; then
    DASH_MN_HEALTHY=1
fi

DASH_MN_ENABLED=$(echo "$DASH_MN_LIST" | grep -c ENABLED)
DASH_MN_UNHEALTHY=$(echo "$DASH_MN_LIST" | grep -c POS_ERROR)
DASH_MN_EXPIRED=$(echo "$DASH_MN_LIST" | grep -c EXPIRED)
DASH_MN_TOTAL=$(( $DASH_MN_ENABLED + $DASH_MN_UNHEALTHY ))

DASH_VERSION="v"$(echo "$DASH_GETINFO" | grep '"version' | sed -e 's/[^0-9]//g' | sed -e 's/\(..\)/\1\./g' | sed -e 's/\.$//')

echo -e "${C_GREEN}DONE${C_NORM}"

# -----

TEXT_RUNNING="${C_RED}NOT-RUNNING${C_NORM}";
TEXT_LISTENING="${C_RED}NOT-LISTENING${C_NORM}";
TEXT_CURRENT="${C_RED}NOT-SYNCED${C_NORM}";
TEXT_ENABLED="${C_RED}NOT-STARTED${C_NORM}";
TEXT_VISIBLE="${C_RED}NOT-VISIBLE${C_NORM}";
TEXT_HEALTHY="${C_RED}NOT-HEALTHY${C_NORM}";

if [ $DASH_RUNNING   -gt 0 ]; then TEXT_RUNNING="${C_GREEN}RUNNING${C_NORM}"; fi
if [ $DASH_LISTENING -gt 0 ]; then TEXT_LISTENING="${C_GREEN}LISTENING${C_NORM}"; fi
if [ $DASH_CURRENT   -gt 0 ]; then TEXT_CURRENT="${C_GREEN}CURRENT${C_NORM}"; fi

if [ $DASH_MN_STARTED -gt 0 ]; then TEXT_ENABLED="${C_GREEN}STARTED${C_NORM}"; fi
if [ $DASH_MN_VISIBLE -gt 0 ]; then TEXT_VISIBLE="${C_GREEN}VISIBLE${C_NORM}"; fi
if [ $DASH_MN_HEALTHY -gt 0 ]; then TEXT_HEALTHY="${C_GREEN}HEALTHY${C_NORM}"; fi

# -----

echo -e "\n ----"

echo -e "      dashd: $TEXT_RUNNING $TEXT_LISTENING $TEXT_CURRENT"
echo -e " masternode: $TEXT_ENABLED $TEXT_VISIBLE   $TEXT_HEALTHY"

echo -e " ----"

echo "   instance information"
echo "     IP Address         $WEB_MNIP"
echo "     dashd version      $DASH_VERSION"
echo "     dashd connections  $DASH_CONNECTIONS"
echo "     service score      $DASH_MN_POSE"
echo "     dashd last block   $DASH_CURRENT_BLOCK"
echo "     chainz last block  $WEB_BLOCK_COUNT"
echo "     masternode total   $DASH_MN_TOTAL"
echo "     masternode healthy $DASH_MN_ENABLED"

echo -e " ----"

echo "   current vote counts"
echo "                   YEA: $(echo "$DASH_MN_VOTES" | grep -c YEA)"
echo "                   NAY: $(echo "$DASH_MN_VOTES" | grep -c NAY)"
echo "               ABSTAIN: $(echo "$DASH_MN_VOTES" | grep -c ABSTAIN)"
echo "             this vote: $(echo "$DASH_MN_VOTES" | grep $WEB_MNIP | awk '{print $3}' | sed -e 's/[",]//g')"

# -----

exit;

legendary
Activity: 1834
Merit: 1023
Hope you had a good weekend
 Grin
hero member
Activity: 728
Merit: 500
Looking forward to awesome things here...Smiley
hero member
Activity: 501
Merit: 503
if the best ten alt devs sat down and made a coin....
sr. member
Activity: 263
Merit: 250
bovine quadruped, professional loafer, dash dev
Full code UPDATED and corrected

Code:
..snip..
MNIP=`wget -qO- http://ipecho.net/plain ; echo | awk "{print \\$2}" | sed -e 's/addr://' | tr "\n" " "`;
..snip..

using that external service to find your public ip, you can just do:

Code:
MNIP=`wget -qO- http://ipecho.net/plain`;

the first version grep/awk/sed/tr is just to turn this:

Code:
eth0      Link encap:Ethernet  HWaddr 04:01:01:01:01:01
          inet addr:123.123.123.123  Bcast:123.123.255.255  Mask:255.255.240.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:91880942 errors:0 dropped:0 overruns:0 frame:0
          TX packets:92742293 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:27872062075 (27.8 GB)  TX bytes:21024386448 (21.0 GB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:281369293 errors:0 dropped:0 overruns:0 frame:0
          TX packets:281369293 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:16196504605 (16.1 GB)  TX bytes:16196504605 (16.1 GB)

into this

Code:
123.123.123.123

Most systems will have wget, so should work fine for hosted masternodes as well.

And, thanks for the donation plug. I appreciate it!
Jump to: