Hi, I'm Amanda B Johnson and you're watching DASH: Detailed

Once in a while there comes a time to delve deep into a highly-technical aspect of the Dash protocol Especially if it's particularly important or unique to Dash In this case, Sporks are both Now when I first started researching Sporks, I came to learn that they are a pseudo-centralized aspect of Dash And that of course got my gears grinding

So to find out what exactly it is that a Spork does, how its benefit could possibly outweigh the risk of its pseudo-centralized nature, and whether there are any plans to phase Sporks out, I called founder and lead developer of Dash, Evan Duffiled And here he is Well Evan, thanks for joining me And how are you today? I'm doing very well thank you Nice I see you have some nice shrubbery or a tree there in the background

That's nice Excellent Yeah I have a green thumb I'm working on it Oh I didn't know that

I'm sure that that is a neat tidbit for anyone else who didn't know that So Evan, as you know, today I wanted to ask you about Sporks because I believe that the first time I ever heard that word used in relation to a cryptocurrency, and not like say, KFC takeout, was in relation to Dash So is there anything I need to know about first before we get into Sporks? Ok, so Sporks are built on the foundation that Bitcoin left us And basically what it uses to – to control the network What a Spork uses or what Bitcoin uses? You know, before we do the foundation will you just tell me like in layman's erms like, what is a Spork? Like if it's not a plastic spoon/fork, what is a Spork? A Spork is somewhere in between a hard fork and a soft work Okay And they're – they're controlled by the the network itself You can think of them kind of like global variables on our network

That sounds, that sounds like a lot of programming talk to me So before we get into that – I know you can't help it – like, when you're thinking up in this level and I'm thinking like down in this level, you're like, what words can I possibly use to make you understand? So before we get to that, let's first lay down some definitions of a hard fork and a soft fork If I recall correctly one of them like, makes it a rule within the protocol, like no longer applied for all former blocks, whereas the other one says hey, there's a new rule but it's only for all blocks going forward Is that the difference between a hard fork and soft fork? Pretty close So hard forks change the rules and – at a future time

Where like, if it – let's say, you want to change the way blocks are accepted on the network and it's going to invalidate existing good blocks Well you can't do that unless you do it in the future and then you get up a large majority of the network to update before that's triggered Ok So a hard fork – in order to change the rules you have to get a majority to update otherwise, what? Like chaos or something? eah They use supermajorities to – to do it

And the the Bitcoin code, whic basically means that you start counting the blocks that are coming out of – of the different implementations And then once you get a threshold then you move from these like, softer rules to these hard rules And then you start rejecting the – the blocks that don't meet the criteria Ok, so a hard fork changes the rules at some point in the future and hopefully everyone agrees on them and now then, what's this soft fork? So soft fork just reduces the the amount of blocks that – that will be accepted They – they tighten the rules

But not in a way that will invalidate blocks Instead what they do is they rely on the longest chain And so they can change rules around a little bit with without causing the the network have to update in this very precise way with – with the hard work So there's a little bit more flexibility So if – if it's soft fork in Bitcoin were to be pushed out for example, if people don't have to update to it, what like, if it doesn't make nodes which don't update to it, like relaying invalid stuff, what would be the reason to update at all to it? You know there's – there's not a whole lot of incentive other than supporting the network

Ah, supporting the network Okay Yeah, and we're back to that again It – it's like herding cats Once you have thousands of servers and a bunch of implementations running all – all together in parallel, it's really difficult to figure out which one should we be running and and trying to keep all of these things updated

So you know, there's – there's no really good way of doing that without some of the – the Dash technology which addresses those issues directly Ok So do any other networks use Sporks or is this a Dash-specific thing? It was invented by Dash I'm, I'm – I don't know if anyone else has adopted them to my knowledge they're – they're not used anywhere else Ok, so with that foundational knowledge behind us, what then is a Spork in Dash? Ok, so the – the Sporks in their current implementation, it's – it's basically where the developers have a way of switching a variable on and off remotely

And so they can say, let's watch the network and rather than relying on counting blocks and in doing these – these other more complicated things, we'll just be administrators, and when we see the threshold reached to safely update the network, we press a button and then the – the network says, oh the developers say, it's okay, let's switch from A to B Ok nd so, it can be switched off as well which, with – with these other types of forks they're – they're simply once turned on they – they can't be turned off without another update And So is this fork then a message? Like it's a message that's sent out from the network from developers or what is it? Yeah, it's a signed message where we sign a specific key – very similar to the alert key – and it says, I want to change this specific variable There's – there's like, 12 or 13 Spork variables for different – different updates that we've done in the past And you can switch those on and off with that key So what kind of variables are we talking about? Are we talking about variables that exists in the client implementation that the – the person was already running? Or is this a variable within the new version that they are running if they chose to run it at all? Assuming that we're talking about these things happening in the case of a new version of Dash being pushed out

So it would be a new variable if it's a new Spork If it's – if it's an older feature we – we carry those variables forever so you can continually update them But – but we're in the same situation where we eed people to update to the newest software so that they – they have the messages to understand what the Sporks do and what they mean And in all of that So then are Sporks sometimes used not in the case of like, hey we're in the process of pushing out version – the next version? Are they just sometimes used in an interim time? They're mainly used for triggering these – these features

Like they're used to enforce masternode payments on the network Ok They're they're used to flag whether we would accept the the older version of the masternode software and we – we can basically do a smooth transitional update using just those two forks where we give people a time period Like we say, between five and nine days of of time you – you have to update After nine days we're going to flip it no matter what

Right? And so we we can create these – these much more complicated ways of updating But there – there lot more simplistic for the network operators and for us to – its kind of like cheating We figured out a way to – to do the – the hard forks and soft forks with about ten percent of the code Ok It's kind of like cheating

Alright It sounds like cheating Ok so let me – for, for the – let's bring it down a bit So you're just giving me some examples of these variables, one of them being whether or not masternodes get paid What are some of these other variables that you have a private key to turn on or off? Ok

So there – there are many different porks that are supported currently We have Sporks ranging from InstantSend – nabling it, doing block filtering, so that we if if there was a an exploit or something that came out that that would continually fork the network based off of this technology, we can trigger that at will, and it would make the network safe to to use during that period of time This is something you simply can't do with a hard fork or a soft fork because it's – it's something that the administrators need to to have some – some power over The – the only issue with the Sporks is that it's a singular key And it's – it is controlling a decentralized network And so what we're doing for that is we have a multi-sig implementation for Sporking where the – the main core DAO has multiple keys and it would take multiple of us to sign these messages to turn these things on and off Hmmm

There's – there's also a another way of doing it using the Sentinel code, where the masternodes can vote on specific objects, and using their voting power, once they hit a threshold they can trigger the Spork as well And so we get Oh It slays me when you say, objects” by the way I have no idea what that means but please continue There's – there's these governance objects now

Some of them are proposals, superblocks, the user profiles We can make them at will using Sentinel Oh Just by making new types and then implementing some rules here and there And so one of one of these – these objects could be a Spork and then to enable or disable it you would, you would have the masternodes vote yes or no on it

Just like you do a proposal and then that would implement some code in Dash D, and – and then we have a perfectly decentralized Spork technology Okay, okay So you're telling me that in the current version of Dash these on-off switches that can basically affect the entire network, or rather, the entire network who is running the majority version of – or rather, that contains the version that contains the Sporking capability – currently the ability to flip these switches on and off resides with a few members of the core team who have the keys to a multi-sig address But you're saying that it – when Sentinel is implemented and I don't – I don't know, 121 or later, you'll telling me that in a moment I'm sure, that it will move from being like a – this is something that for example, only Holger Evan and Ryan in can activate – to something that is rather voted upon by all the masternotes

Is that correct? Precisely Current Wow

And this is what I wanted to talk to you about it, because when I heard of Sporks and when I, like I would – I asked someone in like Slack Chat one day, I was like, what are Sporks and how do they work? And when they told me, like basically what you told me, I was like, wow that that sounds like something that like can and – not even can but should be like decentralized eventually, right? And you're telling me that this is possible and that this is going to happen? I mean, really what we've been doing over the past three years is implementing the features that we want and need to run the network with the least amount of effort possible Because we have limited resources we have limited volunteers we just we don't have a lot of time and and we want the network to – to function the the way that we envision it And so to implement the – the way that I'm describing to you it's at least 20 times the work But I mean to to get there from here – we – we have a clear path now and we only expose the network to the centralized risk just for a little while, while we actually use the functionality proved that it worked efore implementing the – the way, way harder version of it

Ok And so I – I think that's the best of both worlds really Ok So with this, as you say, centralized risk having been implemented and in use for some time now, what are the benefits of it that have made the centralized risk acceptable? Whenever we've updated the network – for example in the 120 release we used Sporks to do it

That – the issue with hard forks is that you have to bind them to blockchain-based variables, and we simply don't have a blockchain for the masternode network, which leaves us in an odd position because we have to be able to enforce masternodes payments If, if the, if we need masternodes stored in the blockchain – and that's – that's also going to be really difficult to to achieve in the eventual What do you mean masternodes stored in the blockchain? What does that even mean? Oh ok

So when when you're getting the masternode list of all of these available masternodes on the network, two peers could have different lists And that they might be one or two off And I mean, this is – this has been something that has, that's happened with our network for since the the very beginning And we've – we've flushed out most of those changes What are the lists used for? What – like why would my client compile a list of masternotes? They're used for payments

So that's – that's how we calculate the payment queue Okay Alright And if there's two lists on two different machines that are one-off, it means that payment queue is going to skip hat one that's different, depending on which machine you're on And that's gonna make an unhappy masternode user – owner

It's gonna make up fork is what it's going to do because once – once you enforce who gets paid they have to agree all of the time Oh That's – that's how blockchain technology would fix it Because you have an immutable record of who's been paid and who should get paid next But

Oh Ok So if two different clients are making two different payments then it creates a fork because the record of past payments is now different

Correct But there's – there's a one – one little thing that – that's a little bit off It's the difference in payments is caused by one of the two peers not knowing about a specific masternode Ok And we can get around this with a Spork

We can – we can utilize some of, some of this technology so that we can turn off the payment enforcement for a period of time to allow the network to update all of these thousands of masternodes And then, once they're all updated on the – the new software, we re-enable it Payment enforcement turns back on, and then we're golden again So the people who hold the private keys for this multi-sig address that can flick on or flick off Spork variables – I mean like, during these times when there's like, an upgrade being pushed and there needs to be a monitoring of masternode payments or whatever, are the people who hold the keys like like drinking espresso all through the night and watching the network 24-7? Or like, what's the process of even monitoring these times? Yeah So I tend to live out of cafes when I'm when I'm working and doing the updates so yeah there's there's a lot of expresso going on It sounds like it And then once – but it's actually a lot easier than that

There's – there's some commands you can use to figure out how on the same page the network is about who's supposed to get paid There's – there's a command that will show you which masternodes are being voted for to get paid and it'll tell you if there's two masternodes with about the same amount of support And when you – when you see that then you you know that the network is still in a state of updating Once it So tell me about this Okay These – this terminally – this terminology you just used The masternodes getting voted for to get paid

Maybe I was under the wrong impression I thought that masternode payments were determined by like, randomness from the hashes of miners Is that actually not how they're paid? Or is it masternode quorums? paint me the picture I think I don't know how you're okay it does both are our true actually oh ok so what happens is there's this deterministic algorithm and it will go through all of the older masternode payments it will calculate who should be paid next based off of the history right and then it's looking at the existing master node list if if it sees you know master node X master Dwyer master nosy hasn't been paid in the past few thousand blocks and it looks like it's the next one using the deterministic algorithm to get paid then if it's in a quorum for for that specific block then it'll vote on that specific master node and what kind of quorum is this is this an instance and quorum or what kind of car is this uh they're all the same really they all use the same technology the the quorums are basically where you you take the proof-of-work hash from the from specific block and then you compare it to the the masternode hashes using this algorithm to calculate the distance between the numbers and the base it off of that you make decisions so then there are payment forums so if the if the algorithm checks the current earth if the other of them is looking through all the masternodes identifies the ones which have not been paid for X thousand number of blocks if that particular master node is currently within the payment quorum of that block that's when and why it gets paid um very very close the the master node that's getting paid is outside of the corn so he he's one of four thousand masternodes that could possibly be getting paid there's a quorum of voters and their-their subset of the masternodes there's ten of them per block and getting those those 10 votes that determine who gets paid I'm done it what I was talking about earlier when I was saying that there could be differences of who gets paid on each block what I what I mean is like if there's ten masternodes voting on a specific block in six of them say extra get paid and four of them say why should get paid we haven't reached consensus yet and that's when when we reach consensus is when the sport gets turned on now why would you oh you mean I'm okay got it that that's when the sports is ok it's ok to do payments now because now consensus is being reached got it okay and to be clear and even was gonna I wanted to make a clarifying point for anyone who is perhaps on the even less technical and then me is if that's even possible that when Evan says votes uh he's he's not meaning like master notes that people do manually where they're like voting for Treasury proposals like yes or no this thing should be funded rather these are like automatic vote that the masternode software is doing itself not that like a human is doing at their keyboard yet precisely yeah okay not that I don't even think that any like non technical person or a person who doesn't aspire to be technical will even watch the episode this far but just in case alright so then this decentralization of the sparking function that you've mentioned in that it it will be put into the hands of a master node votes what what version is that is that is that 121 that's being tested now or is that still down the road um so 12 that ones that the foundation for all of this it's okay essentially the administration software for Dow it's going to allow us to to build these these systems that that secure the network in a much more decentralized way i'm like like i was saying earlier with the objects we can make objects that will that do really complicated things and in and they do it outside of the dash D c++ and then we we actually just use these the Sentinel voting mechanisms to trigger things to happen in dash T so we we've isolated the the business technology or i mean the the business flow and the the business software from the the network software which is dashti and we moved that into a higher-level language which is Python and then by using by using this Python and updating after after 12 that one is released we can start making features for sports and for building evolution user accounts and in things like that alright so i think i have pretty much like one or two wrap up questions for you basically I unfortunately because of a timezone miscalculation as i mentioned to you earlier i'm just crap with time zone sometimes I'm so I missed the q3 core team report call in which i'm quite certain that you all gave a status update as to 121 and it's testing since i missed that for anyone else who may not be caught up with that either on what is the status update sure ok so with 12 that 1i the the best way to explain it this is our pivot from basically an operation that was ran out of a garage for a while I i was the sole full-time developer Iroh all of the original software and then we got 12 dot zero in we basically raised about a million dollars which we've we've gotten like a nice team we have a really solid programming team now of about 20 people between the evolution team and the dash D team and we've we've shifted off the the way that we we do work to a much more on classical way of similar to how other organizations have have modeled themselves to to operate and we're moving over over to this I'm during during 12 dot dot 112 that one is also going to be what is administrating this organization is the network has literally all of the power over everything that happens still but we we need software to run for this process we need we need to be able to have milestones and we need to be able to release payments for these proposals like what if we want three milestones for a project that takes a year and we say we want XYZ for each of those milestones and then you have someone like the project managers voting on releasing the milestones in releasing the funds associated with the milestones these are the types of things that that were going to be utilizing based off of this technology the most recent thing that happened is we hired Tim and a few other people who have taken over the main development on dash D and there doing really good work they have been working on on the test net implementation and have found some issues with a simple attack on test net fix that using a new proof of service implementation called watchdog in these these are the last changes before we start testing superblocks on on 12 that one and that's literally the last thing we need to launch so we're we're pretty close we just want to make sure that we don't damage the network in any way when when we update when we're not in a huge hurry we were like really well positioned and we just want to be careful with you know 70 million dollar network that's a nice thing to be able to say like I feel like we're really well positioned and ok so so then so this watchdog thing is still assembling assembling something to yet be implemented into what's being in to what's being tested into 12

1 i guess i didn't know that if something was being tested it could be updated like even within the testing yes a watchdog is fully implemented we're running it on tests not currently and well I'm it's working it it found all of the nodes that didn't update and has flagged them so we can we can issue the the command to update the network and fork off the old clients using a spork again same same technology and were we're testing this because this is going to be the exact same thing that happens on maenette the purpose of watchdog is to prove that Sentinel is running basically it watchdogs another object so this is another governance object-type and it it allows Sentinel to vote per master node in say yeah i'm i'm watching this object and i see that i need to vote on it and if you don't vote on it you get flagged if you get flagged you get removed from from the payment cues and from the master node list so it's it's the proof that the whole thing is operational on on the master node and my does that mean all master notes will have to vote on everything and forth or did I just totally construed something that's not there oh so I'm central uses automation for a lot of this it runs in the background every couple minutes and so the master notes off our it like look-sees there's a watchdog object pulls it in looks at the rules associated with in central sees that it needs to vote on it votes and then dash D on the other side knows how to deal with that and in will flag and alter the list and all of that good stuff i see so this being again the difference between like manual human voting and like automated software voting yeah i think we need different terms or something that's kind of why you too i'm gonna think on that yeah yeah okay well as a final question uh la la oh yes so as a final question and actually had I made the call and I maybe the core team report call instead of messing up the time of it what I wanted to ask is um is there a shortage of testers um yeah we can actually use a lot more testers we we've had the the really hardcore testers come in and those have been wonderful but I think it's time to actually start doing some more thorough testing of just making sure all the functionality works so if if anyone is interested we can throw up a link to the two that a forum post okay well before i'm going to do that I'm going to ask you point-blank where is the Treasury proposal to incentivize testers that would be a good idea as well yeah that's a good idea because i'm going to say I've been like within the dash ecosystem it seems to me that incentives are aligned properly just left right and center which is actually was the first reason I started going into dash to begin with I was like oh there are people who understand incentives which action which is in it complete like scarcity within the crypto sphere if you ask me but this one particular thing that like testers are expected to volunteer just seems like an anomaly like someone definitely overlooked paying testers yeah yeah that sounds like a pretty good idea and maybe we could give away like a few dollars worth of dash I don't even think it needs to be a ton of money but I'm totally willing to pay people for their time and I I believe that's actually what makes dash successful in just different than everything else yeah well think on that Evan just just think on that a bit if I might encourage you to do so will do because I would be interested to test I if there were a bit of compensation and just a like a a guide that someone like myself could follow to be like oh this is what i do then this is what I do and then this is how i know i'm done i would like to contribute that's a good idea to so we could make a testing guide that just direct you through it shows you which buttons to click in and all of that yeah alright yeah that sounds like a great idea okay excellent all right well with that i will thank you for your time and as always it's been a pleasure to talk thank you yeah it was fun ok bye of it by how do you friend Peter I'm the behind-the-scenes guy dash detail you may know me as the manservant I had an idea for a future episode and one at your help the episode is to be titled ask a bj a bj being amanda b johnson and I just thought to be fun and interesting to hear what questions you had for her about dash or cryptocurrency so please take a moment if you have any questions and let me know and trust myself at rise up dotnet and she'll answer them in a future episode so again trust myself arise up dotnet look forward to hearing your questions and until next week take care peace