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

Proof of Service - Going a step further than Sentinel

Macrochip

Active member
I've been thinking about a criticism someone brought up a few weeks ago. It was in regards of hardware scaling and the gist of it was: "Why would Masternode owners accept increasing hardware requirements and the reduced profits coming with them?"

While some of us would offer the shoot-from-the-hip answer "Because they'd be incentivized to act in the networks interest", I think we'll have to go deeper than that. The major difference between a miner and a Masternode (in regards to incentive) is that the payment for a Masternode is a) virtually guaranteed and b) a fixed sum. Miners however have to provide hashing power in competition to each other. The miner with the highest hashrate receives the most rewards. But a Masternode that hardly contributes to the network receives the same exact reward as one that handles massive amounts of traffic, does IS locks and mixings.

I think what is needed is a mechanism to reward nodes proportional to the amount of service requests they handle for the network. I believe the Evolution whitepapers already mention a similar concept described as "network actions" which can be measured.

I'm envisioning a small sub-ledger next to the blockchain, stored on DashDrive which contains a ranking of all nodes keeping track of successful service requests. A service request can be defined as participation in an InstantSend lock, a mixing session and of course relaying and verifying a block of transactions (and any future usage of full nodes within Evolution).

The purpose, obviously, would be to incentivize people to provide more powerful hardware able to handle more requests than competing nodes in order to receive higher payouts.

I'm not an expert of any relevant kind here and I'm sure there must be some flaw in my line of thinking, otherwise surely someone would've already done this. I'd appreciate input from anyone, but especially our developers. Thanks!
 
Interesting idea. I'm wondering if modifying the method of selecting masternodes for mixing, etc. would make it easier to game the system. If not all masternodes are approximately equal in likelihood of being chosen, a malicious actor could possibly manipulate their way to the top of the list.

Currently it requires investing directly in the Dash ecosystem to do something like that (by buying more Dash to start more masternodes - an increasingly expensive tactic). This could move the requirement for that type of attack outside of Dash (i.e. obtaining more powerful hardware, better network connection, etc.) and allow a smaller number of masternodes to more easily compromise security.

I don't know if my theory holds up to how things actually work. Just an initial thought...
 
Thank you for your feedback @thephez! That system can be gamed very much. I'm putting that "idea" on hold, but let me explain why.

After thinking it through some more the fatal flaw(s) becomes apparent. As soon as I delved into the details of an actual implementation it turns out Proof of Work can't be replaced just like that.

A Masternode would have to be able to prove three things:

It relayed that block to the rest of the network
It participated in that mixing session
It participated in that InstantSend lock

#1 can't be proven without every Masternode stamping its unique signature on each block saying "See? It passed through my hands, pay me more!" bloating the blockchain into infinity, so we can ditch that.

#2 & #3 could in theory be proven by using information that is exclusive during performing these actions. For example the randomly selected quorum of Masternodes could form a 1 out of X (however many nodes are part of the quorum) multisignature that is timestamped & stored on DashDrive. Afterwards only the participants of that quorum will be able to prove they were part of it because only they possess one of the keys. But that would require making Masternodes hack-proof and invites key theft from live servers and is hardly a good solution if we're trying to keep everything decentralized, transparent and open.

It seems service can't (feasibly) be proven except when it's explicitly demanded. But permanently demanding service from all nodes all of the time just to make sure they're not cheating clearly isn't a solution. My approach was the creation of a big list of "who does how much work", but the "who" is the tricky part to prove. Individual nodes would have to be enabled to prove they are who they are but in a way that can't be forged by another node that would like to assume the identity of a hard working node in order to get the higher payment.

It definitely requires someone smarter than me to solve that. Satoshi solved it through Proof of Work, where checking the result is easier than doing the actual math to get there. But we can't apply this to full nodes otherwise all we'd get would be a second mining network.

If anyone has a brilliant idea on how to solve this conundrum without falling back to PoW, you'd probably be the next Satoshi. At least in my eyes.
 
Last edited:
Wouldnt it be possible to run some hardware requirement test, getting harder as set by the core team, with each release of dash? I am not a computer wiz so i really dont know how that would work. But if you needed to prove you had the hardware by test, as well as 1000 dash to start a masternode, seems the problem is solved.

Since the wallet software is open-source, it could be confirmed that the wallet is really just running some numbers on the hardware. And not trying to selectively allow certain masternodes (corruption).

Likely some huge flaw in my logic, seems a bit too easy. Especially since i have no idea how to implement it :)
 
Last edited:
That's the thing about opensource: Anyone can write their own "benchmarking" tool to fool the network by simply stating: "This Raspberry Pi 3 has 500 GigaFLOPS! I* benchmarked it myself. Pay me a little extra, will ya?"

*(A customized self-compiled Dash daemon making up high benchmark results out of thin air)
 
Maybe i misunderstood something completely, but isn't one of the most fundamental features of blockchain technology that everyone has to run the same software? If its possible to build a custom self-compiled dash daemon that tells the network you have 500 GigaFlops, why isn't it possible to build one that tells the network you have 500000 dash in your wallet?
 
Yes that's a grand misunderstanding. Anyone can run anything they want on a free and open network. I can modify my client to say it's Satoshi 18.4 even though no such version exists. It's how the rest of the network reacts to that & interacts with my client that's relevant to the usefulness of my modifications.

why isn't it possible to build one that tells the network you have 500000 dash in your wallet?

Because that's not how consensus works. Your balance isn't recorded by your client but by the blockchain. If you tried faking your balance the entire network simply contradicts you and you'll get the balance that's recorded on the blockchain.
 
I didn't mean to turn this thread into my personal education on blockchains, sorry about that :) Maybe have the other servers on the network test each other? In a random, decentralized way? But then again, more masternodes, less rewards for each - so masternodes would be incentivized to give other masternodes a low score barring them from starting.

Or, we could maybe allocate budget funds for dedicated testing servers, though that might be a bit to centralized.

Anyway, just some thoughts. Ill think some more on this, and try to do some more research :)
 
...
It seems service can't (feasibly) be proven except when it's explicitly demanded. But permanently demanding service from all nodes all of the time just to make sure they're not cheating clearly isn't a solution. My approach was the creation of a big list of "who does how much work", but the "who" is the tricky part to prove. Individual nodes would have to be enabled to prove they are who they are but in a way that can't be forged by another node that would like to assume the identity of a hard working node in order to get the higher payment.

It definitely requires someone smarter than me to solve that. Satoshi solved it through Proof of Work, where checking the result is easier than doing the actual math to get there. But we can't apply this to full nodes otherwise all we'd get would be a second mining network.

If anyone has a brilliant idea on how to solve this conundrum without falling back to PoW, you'd probably be the next Satoshi. At least in my eyes.

Evan/Dash Labs are already working on the proof of service stuff for Evolution, right? My understanding is that this is what the state transitions and masternode blocks referenced in the Roadmap are intended to provide. Given the innovations Dash has already turned out, I suspect there are some brilliant ideas being discussed.

Although, I guess your initial question is more related to incentivizing masternode owners to want/support the changes than strictly the technical ability to do it. Regardless, I'd love to be a virtual "fly on the wall" listening in on those discussions.
 
Back
Top