The History of Delegated Proof-of-Stake (DPOS)

in #blockchain4 years ago (edited)

DPOS (aka Delegated Proof-of-Stake) was invented by Daniel Larimer as a replacement for the Proof-Of-Work consensus algorithm used by Bitcoin and most other cryptocurrencies at that time. All the blockchains developed by Dan (including BitShares, Steem, and EOS) use DPOS to select their block producers.

In this post, I’m going to discuss the history that led to the invention of DPOS. I was working closely with Dan at the time of its invention, and this is how it happened, to the best of my recollection.

Before I get into the details of DPOS history, however, I’ll need to go over some background material on how blocks get added to a blockchain network.

Ordering transactions (e.g. a transfer of money) in a blockchain network

One of the most important functions of a blockchain network is to create a time-ordered list of transactions, with groups of these transactions being stored in a sequence of linked blocks called a blockchain. This time-ordering is important, because it prevents someone from spending their cryptocurrency more than once (an attack known as a “double-spend”).

In order to process new transactions, one of the computers in the blockchain network needs to decide a valid ordering for new transactions it has received, put them in a block, and then broadcast that block to all the other computers in the blockchain network. The other computers in the blockchain network can then check that block, and if it passes the rules of the blockchain network, they add it to their local copy of the blockchain. Then after some time delay (often referred to as the block interval), another computer will repeat the steps above, and another block will get added to the blockchain.

Problems with a blockchain network that uses a single computer to generate all the blocks

In theory, the rules of a blockchain could assign a single computer in the network that generates all the blocks. But there are several problems with this idea.

For one thing, it makes for a very fragile network: if that one computer crashes or loses its connection to the internet, no one’s transactions could be processed as long as that computer was unable to communicate with the other computers in the network (in other words, no one could make money transfers).

Another problem is that a single computer making all the blocks can block all transfers of anyone it pleases, effectively “freezing” money stored in an account. This is because the computer that makes a block gets to choose which transactions it puts in a block. If it doesn’t want to include a transaction, it can just pretend it never saw it. However, even this computer could only freeze funds, it can’t actually steal them (because it can only block transactions, it can’t make a fake transaction that moves money from an account it doesn’t own, because that’s against the rules of the blockchain).

Whose computer makes the next block in the blockchain?

But the ability to arbitrarily freeze funds in the network is a lot of power and you also don’t want your financial network to depend on the health of one computer, so Bitcoin, the first cryptocurrency, was designed with a feature called “mining” that allows computers in the network to compete for the right to generate the next block in the blockchain.

How Bitcoin mining (also known as “Proof-of-Work” or POW for short) works

With “mining”, each computer that competes for the right to make the next block (a miner) races against the other computers to find a brute source solution to a math problem. Because the computers must solve this math problem and prove they have the correct solution, mining-based cryptocurrencies are also known as “Proof-Of-Work” (POW) cryptocurrencies.

Generally speaking, the miners with the fastest computers will be the first to find the solution, then broadcast a block to the blockchain network that includes their solution. If the other computers in the network agree that the solution is correct, this becomes the next block in the blockchain.

At first, mining was seemingly a great solution to the problem of selecting who would produce the next block. Any miner in the network could produce the next block, so even if one miner decided not to include a user’s transactions, the transactions would likely get included by the next miner. So in the worst case, a user’s transactions might get delayed a few blocks.

But computers doing mining consume a lot of power solving those math problems, which costs money. To enable miners to cover their expenses (and to even profit from their mining), miners are paid block rewards when they successfully produce a block. This leads to an arms-race among miners, and ultimately Bitcoin miners resorted to using very specialized and expensive equipment to gain a mining advantage. Unfortunately, this made it too expensive for most people to mine Bitcoin, and over time most bitcoin blocks started getting produced by a very few people with very expensive equipment.

Steps leading to the invention of Delegated Proof-of-Stake (DPOS)

In 2013, I was working with Dan Larimer to create a new cryptocurrency called BitShares. BitShares was being designed as a blockchain-based decentralized exchange (i.e. a place where users could do peer-to-peer trading of cryptocurrencies and other commodities). My team was mainly working on the peer-to-peer network code and the command-line wallet, and Dan’s team was working on the blockchain code, including the method for determining which computer in the network gets to make the next block. Despite the separation of work, perhaps not surprisingly, we would often discuss implementation ideas, and sometimes people from my team would help out on the blockchain side when there was a problem.

Why not go with tried-and-true Proof-of-Work?

Proof-of-work consumed a lot of computing resources (so the blockchain had to pay a lot to the miners) and was relatively slow for our needs as a trading platform. The Bitcoin network had a block time of 10 minutes and we were aiming for a block time of 10s (ultimately we set the block time to 3s). So Dan ruled out using proof-of-work for selecting the next block producer.

A single block producer? A single failure point and too much trust

For fastest speed, Dan’s first idea was to just a single block producer. This does actually have some performance advantages, because everyone could send their transactions to that single block producer which allows for transactions to be included into a block faster. But having a single point of failure made this seem unworkable and you’re really placing a lot of power in one person’s hands.

What about a group of “trustees”? Still requires too much trust

Dan’s next idea was just to have a set of trustees: trustworthy individuals in the newly-born BitShares community who would be assigned to produce blocks in round robin order. The idea was that even if one trustee didn’t include a transaction, the next would. So the only way a transaction would be blocked was if all the trustees decided to block the transaction. One of the big attractions of this idea was it’s utter simplicity, which meant it could be coded very quickly, and we were under serious time pressure to get a functional blockchain network operating before funding ran out.

While the trustees idea was very feasible from a technical perspective and very attractive because of it’s easy implementation, it was also somewhat fragile in that it relied on a fixed set of computers in the network and it didn’t have any mechanism for how to change that list of users over time, except by hardforking in a new set of trustees.

It also placed a lot of trust in the trustees, and crypto-anarchists generally don’t want to place too much trust in anyone. So I and others argued that it required too much trust, and wouldn’t be acceptable by the crypto community. After a day or so, Dan conceded the point and went looking for a new method to
quickly select the next block producer.

Proof-Of-Stake (POS): an alternative way to select the next block producer based on coin stake

Dan next started looking at proof-of-stake systems. Proof-of-stake (POS) was the new up-and-coming method of selecting block producers at that time and the most well-known implementations were Peercoin and NXT. NXT was of particular interest, because it was also being designed to support a decentralized exchange similar to BitShares.

Proof-of-Stake consensus algorithms select the next block producer based on a combination of how many coins a block producer has, how long he has held the coins (a factor called “coin age”), along with some randomization.

Probably the most interesting idea about POS consensus algorithms was that they relied on the self-interest of the block producers to prevent them from colluding to block transactions. The idea is simple: by design of POS-based blockchains, the block producers hold a large proportional share of the coins. The value of those coins is supported by people who are willing to accept those coins for other goods. And if users decide that the block producers might stop processing their individual transactions, the coins will likely lose value, so block producers are incentivized to process the transactions of other users in the general case.

I honestly don’t recall why Dan chose not to implement a POS consensus algorithm. It had its detractors, including claims that it was subject to “nothing-at-stake” attacks. I do have a vague memory from the time when I was reading the POS algorithm for NXT that it seemed quite complicated (for example, use of randomization in the block producer selection process sounds a bit messy and computing coin-age would have added computational complexity), and I suspect this weighed heavily in his decision to avoid implementing a POS consensus algorithm, especially given the time pressure to get a functional consensus algorithm working quickly with limited funding.

The invention of Delegated Proof-of-Stake

But Dan has always been a strong proponent of economic analysis, especially when it comes to blockchain design, and I believe this was his main attraction to Proof-of-Stake systems.

Yet, at the same time he also liked the design simplicity of the trustee model discussed earlier (easy to implement, predictable block production, works great as long as you can trust the trustees).

So DPOS was essentially a synthesis of these two ideas, combined with a twist: instead of large stake holders directly producing the blocks, the stake holders would elect the block producers to make the blocks. Here the block producers fulfill a role similar to the trustees in his original plan for the consensus algorithm. But under DPOS, they don’t need to be trusted quite as much and the system has a defined mechanism for how the trustees are chosen and replaced, requiring no hardfork to replace them.

A final note on “freezing funds” on a blockchain

It always amazes me how business men who act as “thought leaders” and “influencers” often don’t understand the basics of the technological revolution that they purport to be leading.

One thing that inspired me to write this post was a recent tweet by Changpeng Zhao, the CEO of Binance, aka CZ Binance on twitter, that me laugh. CZ said: “Blockchains should NOT have freeze features.”

CZ was apparently upset that the Steem blockchain could freeze the funds of an account and thought that this was some special feature of a DPOS-based blockchain. Yet, as I hope you’ve learned from this post, every existing blockchain network, including the Bitcoin network, can freeze the funds in an account, as long as all the block producers on that network agree to do so. All they have to do is agree not to include the transactions into their blocks.

Note that this isn’t really a “feature” of blockchain technology, in the sense that blockchain developers didn’t all conspired to design their blockchains to work this way. It’s mostly a limitation of the technology, at least as far as we’ve been able to design blockchains so far.

The fewer the number of block producers on a blockchain, the easier it is to achieve the necessary coordination to freeze an account’s funds. This means, for example, that the top bitcoin mining pools could likely freeze an account’s funds for a very long time assuming they decided it made sense. But generally it’s assumed this won’t happen, because they are paid in Bitcoin and arbitrarily freezing someone’s funds is generally not going to be viewed favorably by the people that support the value of Bitcoin.

So a blockchain’s economics have to be designed so as to discourage the chain’s block producers from freezing an account without a good reason. I’ll probably talk about some ways to do this in my next post.

More to come

As mentioned previously, I wrote this post mainly to lay the groundwork for my next post, which will look at the economics and philosophy of DPOS, explore its advantages and weaknesses, and ideas for how to improve it. Unfortunately, I’m pretty busy lately, so it may take a while before I write the followup post on this topic. I’m publishing this one now as it was mostly written when I wrote my earlier posts, and finishing it up today was a nice way to relax and focus my thoughts.

There are 2 pages

Back in early 2014, the consensus mechanism that eventually became DPoS was actually the first blockchain design problem I ever attempted. At the time I was just a community member flaming the forums with my opinions on how BitShares should be built. (I'd mined a meager handful of PTS, and wanted to do what I could to help the yet-to-be-built BitShares succeed.) I just wrote a post about the early history of DPoS with my own perspective and memory of details from those days.

Yea, I also cringed when I saw the comment about blockchains having "freeze features". What you said about the "leaders" and "influencers" in the space not understanding the basics of the technology is unfortunately the sad reality.

Instead of feeling cringy and superior and trying to be mysterious, make a post and explain the concept to the community. You are a witness after all.

Keeping people in the dark is a common thing among profiteers. The dumber, the better.

Its "cringy" because it was said by CZ, not some newbie or average user. CZ is one of the most prominent participants in the crypto industry, so for him to not know blockchain fundamentals is reasonably cringy.

The idea still applies.

This post discusses many ideas, some people will read it and undressed some concepts, they will probably understand (especially the decisions) the whole situation even better now that they know a few things.

Instead of silence, witnesses should spread knowledge and educate the community about the chain. It is well known that a dumb population is easier to control, a smarter population will keep everyone in check and accountable. Guess why witnesses were posting movie reviews and streaming games instead of doing what really matters?

Just accepting the final decisions without knowing why and how is pure slavery. Treating people like if they don't have the brain for it is also pure slavery.

Not to be argumentative, but I disagree that it still applies.

Nobody was talking about the "masses" here. Its not "cringy" for the wider community to be confused, and lots of people, including/especially witnesses will be glad to take the time to assist. That's not the issue here.

CZ is not part of the wider crowd. The man employees very smart people that can help him understand blockchain. He is one of the foremost participants in the blockchain industry, and it is cringy to not know your own industry.

Not to be argumentative, but I disagree that it still applies.

No worries, it's always better than believing in something just because it feels good.

Nobody was talking about the "masses" here. Its not "cringy" for the wider community to be confused, and lots of people, including/especially witnesses will be glad to take the time to assist. That's not the issue here.

Well, I was. Your replays to people should be based on what they said, no based on ideas you think you could have a good answer to them.

CZ is not part of the wider crowd. The man employees very smart people that can help him understand blockchain. He is one of the foremost participants in the blockchain industry, and it is cringy to not know your own industry.

Already answered that question, at least have the decency to check my comments above.

Keep on cheerleading,

Thank you,

 4 years ago  Reveal Comment

this post by @blocktrades that you are commenting on does exactly that (explain the concept)

No shit sherlock.

Now the hard question: Why @blocktrades was the first to talk about it? Get it?

and witness that only communicate with the community 1 time in 4 months is BS.

and don't you dare start talking about "They are doing a lot of work in the BACKGROUND"

If @blocktrades is doing it, all witnesses can do it.

If you think @blocktrades is the first to talk about consensus mechanisms on this platform after reading a 2020 post, you are sadly mistaken.

The DPOS systems has been posted, blogged and commented about in countless instances on the Steem platform (and other message boards & fora for that matter). It's been subject to a LOT of debate.

Nearly all of the original top 20 witnesses have been pretty vocal about their views in general, which is only normal since before participants in this network should vote for anyone as a witness, it's nice to know their views.

I would personally say it's necessary to know their views before voting, but it seems that currently there are witnesses in the top20 that have NEVER posted anything...



The reality is most people are not interested in understanding the technology. I have said time and time again, when there is a crypto that can hide all the tech stuff, people will flock to it in droves.


I would call it "feature" as long as the developers of that blockchain put in place the tools to do it.
For instance, this "feature" has been more designed and elaborated in EOS.
So, from my side I don't see it's wrong to call it in that way.

It's absolutely not a feature, IMO. It's an aspect of the technology. Sure, you can put in place tools to manage that aspect of the technology. But that doesn't make it a feature, it's still just an aspect of the technology, not something that was designed by choice, which was what CZ was implying. Now you could argue that tools to manage it are a feature, but that's a different point.

Now you could argue that tools to manage it are a feature.

Exactly, this is my point.

it's still just an aspect of the technology, not something that was designed by choice

I agree that this is an aspect of the technology. But it is also true that when you design and write the code, if you put code to freeze accounts you are adding this as a plus, as something specific for that blockchain, you could summarize it as a feature.

I understand that freezing accounts could happen in all blockchains, not specific ones. But you could label those blockchains in that way when the majority of miners/producers/witnesses decide to apply a specific code to do it.

btw, I liked your article. Good to see the history behind the decision of DPoS.

Thanks for writing this brief history. I wish that your next post can address how and why some key numbers/parameters of Steem's DPOS are decided like top 20/21 witnesses, 30 witness votes per account and etc, which are very relevant to the recent controversy.

This article is for history- and textbooks. Thank you very much for taking the time to write it.

Yes, in times like these, changes (can) happen. Hopefully for the better.

The consensus was formed in the defense of the blockchain. It was an act of survival. Next steps, when the fight to survive won't be needed any longer, hopefully, is to put in place better governance, reputation system, power/wealth distribution, visibility/discoverability of the content, ... All the boring stuff :)


Cringe indeed.
I think the most worrying comment CZ made was at the end -'but if other witnesses are inclined to remove our users’ ability to vote in the future, we may be forced to implement it now'
Power mixed with limited knowledge is a shitstorm waiting to happen...

Really looking forward to your next post for improvments

I had no idea of your history extending to those formative days! Although not sure I totally understood the fine points about POS, you explained clearly enough the motivations to seek an alternative in the form of the new dPOS that a layman should be able to grasp how it came about. Quite ingenious, actually, though we're still in somewhat "early days" of figuring out how to make the system totally trustless and resistant to different attack vectors.

Like other commenters, I wonder if we can explore in a major way various alternative options for witness voting — 1 SP, X votes (X being 1-30), the ability to vote for as many witnesses as you want, where the % of VESTs is split up between them, etc. What about an exponential curve of witness voting? Perhaps in the context of this series you might be able to enlighten us as to the decision to go with the 30x multiplication if you were around for that?

Anyway, grateful you are finding the time to keep the solid posts up in these hectic circumstances — there is still such widespread ignorance as to the basic functioning of blockchain that it's really important to have concisely-written articles like this available for people who are interested—I guess we are really all still early adopters? It feels weird to say that when we're a decade deep into BTC's life, but in the grand scheme of things that's really not so long. Be well @blocktrades :-)

you might be able to enlighten us as to the decision to go with the 30x multiplication if you were around for that

The original design of Steem had unlimited votes. The idea was that you vote for all the witnesses (however many that is) you think will do a good job and not harm the system in any way, and so does everyone else. The elected witnesses are the ones that the most stake views as doing a good job and not malicious, which is likely to be very strong and broad support indeed. In this system you don't need to choose or rank your favorite witnesses, just rate them as good (vote) or bad/unkown (no vote).

It was recognized after Steem launched that votes do not only choose the top 20 (was top 19 at the time) witnesses but also determine the weight for backup witnesses. By voting for more backup witnesses (and recall that the number of votes was unlimited), someone can direct more of the backup witnesses weight, which is arguably unfair and also exploitable. Therefore a limit of 30 was put on it, which was seen as a balance between all the good stakeholders being able to vote for enough "good" witness candidates to fill all the top slots, and making even more votes which would upset the backup weights.

@blocktrades you don't mention it directly but I assume the Ripple consensus protocol was traken into consideration.

I always thought about Bitshares as a Ripple alike system, but with the capability of being run by anonymous entities who are economically stimulated not to collude against the network.

Now because of the Tron attack thanks to the help of the centralized exchanges (Binance, Huobi, Poloniex), the STEEM network has been put in a situation that resembles the early days of Ripple, when most of the validators (witnesses) are controlled by the same entity.

The obvious difference, is that from TRONs perspective, there is no real economical incentive to protect the value of the STEEM chain. Ripple acted as a "benevolent chain dictator" until they managed to decentralize the validators.

At this point, I don't see how a fork can be avoided, because Justin Sun has no real incentive to act as a "Benevolent dictator" for the STEEM chain.

What about a group of “trustees”? Still requires too much trust

Dan’s next idea was just to have a set of trustees: trustworthy individuals in >the newly-born BitShares community who would be assigned to produce >blocks in round robin order.

"...Justin Sun has no real incentive to act as a "Benevolent dictator"..."

Profit is his most relevant feature. How can he make money from Steem? Without our help, all he can do is sell his tokens. He might recover his money, but he won't make any that way.

Steem has a lot of dapps, and particularly Splinterlands, which could spread to Tron and actually attract users to Tron. @aggroed seems like a businessman, he and Matt both. There's more like them around here too.

In fact a charm offensive full of business proposals that make Sun money, or benefit Trom some way, could be our most potent weapon to preserve our autonomy and blockchain. If he's making money from the status quo, there's no need for him to squeeze harder - unless we hold out on him. He's got money to invest and we've got business plans that need funding and a nifty tool to enable novel profit centers. We should put that to work asap IMHO.

Being an asshole to @aggroed sure isn't gonna make Sun any money. He'll catch more flies with honey than with vinegar.

How can he make money from Steem? Without our help, all he can do is sell his tokens. He might recover his money, but he won't make any that way.

Justin Sun acts like early days Microsoft, buying companies just to get some market share (and shutting down those companies). He can just use to convert the most "non-crypto" part of STEEM community into the TRON network users.

If he invested 10M for the ninjamined STEEM stake + website, he just needs to create +10M in value for the TRON network. It doesn't matter (for him) if STEEM value goes to 0. He still has and just needs a mechanism that let current STEEM based users to be onboarded to TRON.

So he has no real incentive to act as a "benevolent dictator" towards the STEEM chain, he just needs to play "benevolent dictator" for users and figure out how to replace the "chain" into TRON.

Microsoft has a history of doing this, he is trying to play that kind of game.

If he invested 10M for the ninjamined STEEM stake + website, he just needs to create +10M in value for the TRON network. It doesn't matter (for him) if STEEM value goes to 0.

This a fine point that many scoff at. Keep in mind, is an established alexa-ranked site with pre-existing crypto cred. Block One paid 30 million for the domain alone. He could burn the STEEM blockchain, his STEEM stake, the entire STEEM community (a few thousand active users), and still come out of the situation with exactly what he wants.

I'm afraid that's his goal. I don't see how a hard fork can be avoided at this point.

My point was we can give him reasons.

Yes, Ripple was looked at, but it's been quite a few years and I don't remember much about what consensus protocol it had back in 2013. I don't think it was particularly interesting, or I think I would recall it.

From the BitShares point of view, the ability to "ripple" a trade across multiple markets was definitely interesting, and I'm occasionally surprised that the Ripple feature was never directly implemented in BitShares (although someone wrote an arbitrage bot on BitShares that did that, but pocketed the arbitrage rewards).

@blocktrades I look at your rep and is #74 at the moment. Do you think an improvement to the STEEM DPOS could be to use the reputation as threshold for being considered for the witness election process?

The current protocol lets an user with a 25 rep become a witness, so it was pretty easy for Justin Sun to impose sockpuppets by just "brutforce". That would be ok 4 years ago, but after several years, maybe it could have been a good idea to require a certain rep treshold for any user to be elegible as witness.

That would be a "proof of human" also for witnesses.

The current rep system on Steem was developed as a quick bandaid for spam problems. It's pretty broken as a system for real reputation. It's interesting you bring this up, though, because one of the main things I want to introduce to Steem is a reputation system that really works.

The tech I'm talking about also has many implications besides reputation as well. I've spent the last couple of years kicking around the applications for it and trying to decide where to find an initial home for these ideas and the corresponding software implementation. With Steem finally having a chance to be a true decentralized platform for idea exchange, I decided this was an ideal place to introduce it and I'm looking forward to setting up a team to develop it.

@blocktrades I hope you can develop such an improved reputation system and use it to filter fake suckpuppet witnesses in the future.

The combined reputations of the voters for a witness is certainly a candidate for a signal that this isn't just a hostile take over by a single entity.

The absolute number of votes to somehow weight the net weight of the Steem Power would also make this kind of attack harder.

Since reputation is currently only really a measure of the value of the upvotes an account has received (and downvotes), the more benefit a user gets from a high reputation, the more chance there is of them buying votes and self upvoting etc.
The effects on Proof of Brain also have to be considered.
A truly effective reputation algorithm would be great, but I am not sure it can be done without some kind of KYC.

I very much believe it's possible to create a reputation system without what is traditionally known as KYC and I plan to write more on that topic in the future, once I have some free time again.

Such ideas have been suggested in the past, but an attacker can easily distribute his Steem Power over many sockpuppet accounts to counter that.

This is interesting.

As I was reading some of the responses above, I was wondering if there was any real way to determine "good" from "bad" stake, and how that may implicate witness voting.

Based on your explorations of a potential 'reputation system that actually works', and the original comment from @argsolver above -- would using a new reputation index as a criteria for running a witness be an effective way to do it? Or would another path, such as maybe applying some kind of bonus/penalty to the effective stake being used to vote witnesses work?

Regardless.. Definitely eager to hear more background / context on DPoS, as well as your (and @theoretical's ) thoughts on future improvements / different protocols.

Here I define "REDPOS" as a DPOS protocol evolution thanks to the reputation factor.

Many witnesses create a new account for their witness (so their blog/main account is separate form their witness/alt account). The rep can be circumvented (and augmented) by one or two high-rep/high SP accounts.. so while the timing of the puppet accounts' rise to witness may take a little longer, it's still possible to bypass such a limitation.

Regardless, the best part about a blockchain is that anyone can be a witness with enough support from the "community".. limiting by rep is an arbitrary barrier to entry that may make potential adopters shy away from the "eliteist" protocol/restriction on becoming a witness..

Just my $0.02

limiting by rep is an arbitrary barrier to entry

Like any treshold is arbitrary, of course. The intention is to help constitute a "proof of human". With no barrier, it is proven that 30 suckpuppet accounts can be created by one entity and take control of STEEM just by means of SP brute-force.

STEEM is a blockchain, but it is also a 4 year old HUMAN community, so there should be ways to incorporate the human factor or the "proof of human" on the witness electoral process.

It could be a "non-issue" to create a witness account with non-rep like 4 years ago. But now in my opinion, it just doesn't make sense to allow such a thing.

If REP can be gamed as factor, at least it demands some effort/time and time is a factor that could be used to protect the chain in case of an attack.

Agree that there can/should be a barrier, but Rep is not the correct one. It's too easily "gamed" .. that's all I'm saying, which I guess I didn't explain well enough. Read the whitepaper and you'll know what I mean. It's pretty simple math for why Rep isn't a true barrier when you factor in someone with enough SP to auto-elect witnesses.

STEEM has the advantage that no witness knew they were "mining REP" for 4 years. So if you implement a better REP system (perhaps taking parameters such as account age) and then convert the current DPOS protocol into a REDPOS one you should get a stronger blockchain.

Wont be perfect, but sure better.

Superb explanation Dan!
(Of course) I already knew about the inner technical workings of dPOS, but this was the first time I've read about the dPOS "invention process" itself, and how you were involved in the feedback and thought process.


Thanks for this timely message. I will admit the genesis of how dpos started is an eye opener. So freezing generally just means to collectively ignore a transaction while the person funds remains theirs. And is an idle function of the blockchain.

Yep, that's it exactly. In Bitcoin, you can pay more for your transaction to encourage miners to include your transaction in preference over others when the network is busy and miners can't fit all the transactions into their blocks (if they include your transaction in their block, they get your transaction's fee).

Now I understand the cumbersome maths behind btc block trx you wrote above. The handsome the fee, the quicker it gets validated in the block.
Between thanks for putting a superb effort in breaking down the nitty gritty of what needs to be understood and worked upon in the system.

I look forward to your next post/part. Can't wait to read it.

Excellent synthesis .
At least, one advantage of this crisis is that everyone can learn something about blockchain technology.

There is nothing to be learned here that wasn't already clear as day. The only difference between now and before the attack is that now no one will label your words as "FUD" if you speak negatively about DPOS.


I was unaware of your deep roots in DPoS and early work with Dan. While you may further enlighten me with your next post, I am also interested in knowing more about your genesis as well. How did you get involved with peer to peer work with Dan? From whence did you come to it?


My genesis is a long story (I'm over 50), but I can share the highlights of how I got into cryptocurrency...

For many years (starting in 1991) I've run a self-funded company that specializes in creating and selling software for the electrical engineers that design digital circuitry (think smartphones, computers, digital radios, gps systems, and most of the other modern marvels of electronics). The company began with just me and my partner, Donna, then we began hiring part-time students, then later full-time professionals, to help develop our products.

Around 2012, we decided to venture into custom software development contracts. Over the years, we had built up a team of extremely talented software programmers and we saw an opportunity to market those skills to companies with programming teams that were struggling with difficult software problems.

One of our earlier contracts was with another software company in Blacksburg, Va (the town where I live). The company was attempting to design software to solve complex engineering problems with the work being distributed across a network of computers. Multiple internal teams had already failed at the project, the current team they had assigned to solve the problem was behind schedule and struggling badly, and no one else at the company wanted to be associated with an apparently doomed project. We were contracted to help get the team back on schedule, which we did.

The tech lead for that project was a relatively new hire there named Dan Larimer. While working together, Dan and I began talking about our outside interests including politics and economics, and Dan shared his interest in developing a cryptocurrency that supported stable coins (a cryptocurrency that tracks the price of a fiat currency) and also allowed for shorting of a cryptocurrency (betting against the value of a coin).

During the middle of the project, Dan was able to obtain funding for his cryptocurrency ideas from a wealthy Bitcoin entrepreneur (he received his initial funding in Bitcoin), so he quit and began coding. He hired me directly on a part-time basis and later contracted for some of my company's other programmers as well, to develop his project. The peer-to-peer network for BitShares was one of the tasks assigned to our team.

Eventually his funding for BitShares began to run out, and he could no longer afford to pay us, but I wanted to stay in cryptocurrency, so I started a second company called BlockTrades to focus on cryptocurrency projects, with our first product being the web site you're probably aware of.

So it's fair to say that Dan is directly responsible for me getting into cryptocurrency.

Putting so much details about yourself, certainly wins a lot of trust and respect.


I am greatly intrigued by your journey. I have so many interests regarding improving interfaces, but no skills.

Thanks for letting us know your Genesis.

Very good post, but downvoted due to disagreement on rewards, since Author is early miner and permanently top witness for four years. A lot of the minnows would prefer that such posts would be 100% Burn Posts.

Yet, as I hope you’ve learned from this post, every existing blockchain network, including the Bitcoin network, can freeze the funds in an account, as long as all the block producers on that network agree to do so. All they have to do is agree not to include the transactions into their blocks.

So during the time when 22.2 was active for many top-20 witnesses, if the steemit account did some of the transactions that 22.2 was designed to block like issuing a transfer, would the transactions have eventually gone through because one of the non-22.2 witnesses (either in the top-20 or the timeshared backups) would have eventually encountered them and processed them (having no reason not to under the code they were running at the time)?

A lower-ranked witness not running the softfork code could have produced a block that contained such transactions. But the witnesses running the softfork would have rejected that block itself (they wouldn't have added it to their local chain of blocks).

This would have resulted in two different chains on the network: one with the block and one without. These two chains would then compete and eventually the longest chain wins (which would have been the softfork chain, because far more active witnesses were running the softfork).

So the block would have become "orphaned" in the terminology of blockchains and the transaction would not be recognized as valid by the network.

Yet, as I hope you’ve learned from this post, every existing blockchain network, including the Bitcoin network, can freeze the funds in an account, as long as all the block producers on that network agree to do so. All they have to do is agree not to include the transactions into their blocks.

You are comparing Bitcoin to Steem which I think is a bit misleading considering the scale of both chains and different mechanisms they operate on. It's not that easy.

If something similar to SegWit (theoretically speaking) would happen on Steem, the implementation would be instant because there is a huge centralization of power. This means a simple culture war could lead many people to lose their stakes by a HF/SF.

However, on the Bitcoin chain, SegWit transactions are yet to reach 100%, even after years of its implementation.

You're talking about the ease of hardforking Steem versus Bitcoin. You are correct that it's much easier to hardfork Steem.

But freezing of transactions has nothing to do with hardforking. The block producers just have to agree not to put the transaction in the blocks they make and the funds are frozen. No hardfork is required.

So the technical ability to do this is simply a function of the number of block producers that need to agree to do it. Because of pooled mining on Bitcoin, there's not a lot of coordination required (there's just a few major mining cartels or at least that was true last time I checked). Now you could argue that someone could fire up a huge mining pool of their own and get their transaction published that way, but that's not a small undertaking.

I was speaking about the first version of "SegWit" which did not require a hard fork. The second one "SegWit2x" does, but wasn't pushed because of a lack of consensus and other technical disagreements.

Which lead us to my point. Even though there are concepts and technical similarities as you stated between the chains, one can mistakenly conclude that our situation is the same as the one on the bitcoin chain.

We should not, in my opinion, deal with the issue with an approach that plays more on the similarities of technical concepts, but rather on the different values and effectiveness of these concepts on different architectures and blockchain models.

That transaction consensus constitutes a higher threat to chains that are highly similar to our chain, thus, such technicals characteristics need to be taken into consideration while approaching the question of freezing stakes or any other form of transaction refusal. As you can see, a technical concept can carry different weights according to which environment you put it in hence why a precision could be made when writing about such a thing.

I beg to differ, such consideration is important to anyone who wants to invest or build a new blockchain. If specific types of chains are more prone to the abuse of "transaction refusal" or other attacks, then yes I think it's important to mention it even if the technical definition of such mechanism is the same on all types of chains.

You can't just add a DPOS and POW chains in the same bin when it comes to the potential risks such a mechanism could represent.

 4 years ago  Reveal Comment

That "few of people" can be easily achieved on Steem than Bitcoin. That's my point. Think about it in terms of risk management for example.

Hey @blocktrades, some friends redirected me to this article and told me that a Spanish translation might be a good idea, so I made a voluntary Spanish translation, I hope there is not a problem with it.

In the next article do you plan to talk about the "promises" that certain entities can make in a DPOS network? I think it would be interesting to read a bit about it from your perspective

Sure, you're welcome to do a Spanish translation.

I'm not sure yet what my next article will cover, but I'm certain I will be covering the topic of promises before too long. In my own life, a person's ability to respect promises is one of the main criterion I use to judge people and make decisions about whether I want to work with them or not.

Translation done, ty.

In my case, I believe that the ability to respect a promise is something that defines how I will see that person from that moment on. Keeping a word is something I simply respect a lot and something I pay a lot of attention to and with everything that's been going on lately, talking about it would not be a bad idea.

Is blocktrades back open for trading?

Thanks for this wonderful update, I think by now everyone should understand some of the things and the implications about keeping large amount asset to exchange.🙏💓🙏

Posted using Partiko Android

Very informative, @blocktrades, I’m still learning what blockchain is and what it can be, so this was an important lecture. Thank you.

Awesome blog. Even a newbie in tech like me could understand most of the things mentioned.
I'll be on the lookout for part 2 .

Superb and timely! This should be required reading.

Please don't take too long with the next edition! :-)

Can we have an update on the negotiations with Tron?

I understand it's a sensitive subject and not everything can be said publicly, but a rough picture would be nice.

Is he listening? Will he remove the witness votes? Do you believe hardforking is now the most likely outcome?

Yes that would be nice to hear an update on.

Great Compilatión of General know about the fuction of Blockchain world.
Thank you so much.

Thanks for sharing your experience, and I'm looking forward to hearing your thoughts more specifically related to strengths / weakness.

It's definitely interesting to see into the evolution of DPoS.

~ Thanks for very clear explaining and lovely history lesson

I look forward to your next post. =)

When you say that all witnesses can agree to freeze an account transaction. So, you mean that every transaction in the chain is identified by the account name? Is that how you know which transaction to freeze or ignore? Forgive my ignorance, but I'm having a hard time understanding this.

When you make a coin transfer, your wallet creates a transaction that includes the "account id" that holds the money. In the case of bitcoin, this is a bitcoin address. In the case of Steem, it's an account name like "mballesteros".

So yes, all the block producers can see this account id (they have to be able to see the account id in order to process the transfer) and they can decide to not put the transaction in their block if they have decided to ignore transactions from that account id.

Thanks for the prompt response, I thought each transaction was just a string of numbers with no identification or relationship to any account, I thought that was untraceable.

Numbers can be very traceable.

In cryptocurrency networks like Bitcoin and Steem, that don't have "privacy" features built in, you should assume your transactions are traceable if someone wants to put sufficient effort into the task.

In part this is true because most people use exchanges and exchanges are mostly required now to collect identity information from their customers.

Now I understand a little more. I'll be looking forward to the next posts to continue learning. Thank you very much, you have the patience of a teacher. 👍

A really excellent post laying out the groundwork and history of the system.

Really cool to read and understand bit more about the history.

Thank you for your time posting this article. It is truly great if everyone knows about the blockchain.

This is awesome thanks for the little history lesson. I’m still learning about the environment and this was cool to know and understand. Look forward to the next edition!

You were in a great place of history. We support you.
Thanks for the very useful post.

Thanks for sharing, very cool historic info.

Just for my own curiosity, I see you will be doing an updated post. Did you guys ever have any discussions on the economic aspect of how this blockchain functions, did anyone ever say, hey wait a minute, this is just a functional form of oligarchy...?

I really enjoy the social media aspect of the STEEM blockchain, but after I joined and learned how it works it became apparent to me, that the coded rules are exactly how an oligarch government of a country would function.

I think it was generally understood by all the devs how DPOS functioned economically, at least to some extent. It was certainly examined for attack points, and we were well aware of the potential for attack by an exchange with a lot of stake, for example. It was considered an acceptable risk at the time, but time has shown that to not be true, I think.

But for a full analysis of the socio-economics of DPOS, I need a full post, like the one I'm promising eventually. A lot of people do get the wrong ideas about it, and I don't consider it as bad as you're implying, because there are economic limits on abuse that may not be obvious at first glance. But again, it's a longer discussion for another time.

Thanks, looking forward to your post, maybe there are some rules in the software I am not aware of. I have always had an interest in economics and how currency flows through economic system, so I guess maybe I saw this flaw more clearly than most...

Appreciate your work. You made it easy to understand even for a non technical guy.

Dear @blocktrades, could I translate this article into Indonesian language?

Sure, you have my permission to translate it.

Thank you for permission. I am going translate in next two days🙏

I hope he replies and says yes, I can't imagine he won't!

I hope so, thank you for your kindly support.

DPOS = Cosmos network

I enjoy reading it. History always interest me.. Very cool post..

Scholarly article. One for the textbooks!

Congratulations @blocktrades!
Your post was mentioned in the Steem Hit Parade in the following categories:

  • Upvotes - Ranked 6 with 869 upvotes
  • Comments - Ranked 2 with 85 comments
  • Pending payout - Ranked 2 with $ 177,92

Hey @blocktrades, here is a little bit of BEER from @ervin-lemark for you. Enjoy it!

Learn how to earn FREE BEER each day by staking.

I was considering DPOS as a alternation of the LMAX Disruptor ..

Hey @blocktrades. Thanks for the good breakdown not only explaining the algorithms, but in relating to how they were developed at the beginning stages. It was a good post.

every existing blockchain network, including the Bitcoin network, can freeze the funds in an account, as long as all the block producers on that network agree to do so

I thought it was hilarious when he said blockchains shouldn't be able to freeze accounts. Like... really? Could you explain how the super-majority on Steem can stop the other 3 witnesses from including those transactions? There is like some kind of veto round and their block doesn't get included if they try to process it?

Just like witnesses can choose not to include transactions in their blocks, they can also choose not to include blocks in their blockchain.

In such a case, witnesses that agree the block shouldn't be included will build the same local chain on their systems. Witnesses that don't agree will build a different chain on their computers that includes it.

At some point, there's code that tells the witness to switch to the longest of the two competing chains (although even that can be changed via software).

Very interesting!

Posted using Partiko iOS

Very inspiring and motivating to keep the spirit of work, with the best ideas. Thank for sharing.. you'r the best forever @blocktrades.. and success is always for you

!giphy awesome

Posted using Partiko Android

giphy is supported by witness untersatz!

This means, for example, that the top bitcoin mining pools could likely freeze an account’s funds for a very long time assuming they decided it made sense. But generally it’s assumed this won’t happen, because they are paid in Bitcoin and arbitrarily freezing someone’s funds is generally not going to be viewed favorably by the people that support the value of Bitcoin.

No, it is not that. Right now, if all the major pools censor your transaction, you can simply go to Nicehash and buy enough hash for producing a block, which will include your transaction. That will have a cost that is slightly above 12.5btc, but you get 12.5btc back, and you will get exposed to some variance risk. However, this means that, essentially, any significant enough amount of funds cannot be freezed. At least, not just by policy.

Now, the only option to effectively freeze the funds in pow chain would be to explicitly fork them out, to make a soft fork that explicitly considers your transaction invalid. However, that protocol change needs to get adopted by everyone, not just by the major pools, because otherwise, with any miner-only enforced softfork, it pays off to drop it and trick competing miners to get stuck in a shorter subchain.

This, the fact that miners are competing with each other, is the thing that protects against censorship in pow chains, and not any economic based common goods consideration.

Nicehash is a centralized entity. They may be acting as a broker for buying hash power, but they can stop at any time. And the very act of selling hashpower is an economic based consideration (as is miners competing with each other). Note, I agree that it is a plus for bitcoin that a market such as nicehash exists now.

@blocktrades, Thank you for sharing all these very important Point Of Concepts. In recent days many questions raised upon DPOS System. Hope that going forward some important measures will be taken to strengthen it so that we can put a full stop to Potential Takeover Attempts. Stay blessed team.

Posted using Partiko Android

There's definitely work being done to address that :-)

Good to know that team. Stay blessed.

Felicitaciones por entregarnos sus experiencias y esta interesante historia, sobre todo ahora que bitcoin comienza a bajar. La experiencia es muy útil. Esperaré la próxima publicación.

There are 2 pages