You are viewing a single comment's thread from:

RE: Some weaknesses in either the DPOS algorithm or its explanation

in #cryptocurrency7 years ago

There are usually two different ways you can read what someone has written: assuming they're smart, or assuming they're dumb. You're doing the latter, and it hurts our ability to have a decent conversation when you do that.

I know how digital signatures work, and I understand the difference between "impossible because: crypto" versus "forbidden because: protocol". I just think the explanations need to be better. The things I feel that are not full fleshed out are things that an allegedly smart guy says he thinks are not fully fleshed-out. That's all.

Maybe it's impossible because: crypto to create a bad transaction. I mean, not just something where the signature is wrong, but something where you literally cannot say what account to transfer something into because you don't have the private key? I don't know. That's not specified. I know how this works in POW. I don't know how this works in DPOS. What if I make a bad transaction with a bad signature but a bad witness permits it? I don't know what happens. And that's the thing that I want to know.

You're hand-wavey on exactly the points I want to know about. Rewound? How the hell did that happen?

History is not a perfectly clean line, it's a gigantic tree of transactions, and we hope there's exactly one way to parse this tree into the canonical, linear list of transactions. And hopefully the explanations of how this algorithm works should explain how to do that. I think the problems I have with the explanations are solvable. I have some ideas of how I would do it if I were to make a thing, but I'm reading whitepapers that are purporting to explain the thing, and there are things that aren't explained. If I'm reading the wrong things, then point me to the right ones.

The idea that votes are weighted by activity is nice in terms of someone suddenly trying to instantiate a bunch of accounts all at once to influence a vote, but then it certainly seems dangerous that high-reputation accounts have more influence than normal folk.

Ultimately, from a protocol-perspective, I think the thing that I'm uncomfortable with is that there's only one guy producing a block at one time. It's possible to catch that guy if he does something bad, but I would prefer that the other witnesses prevent that somehow; and that those rules were built-in the protocol. Basically, I'm saying that all 'N' witnesses should try and see what they would think the block should look like, even though only one is authorized to generate the block. And if the generated block seems to be missing some things, or some signatures don't line up the way we presume they ought to, then there should be some kind of defined way to handle that.

Sort:  

Basically, I'm saying that all 'N' witnesses should try and see what they would think the block should look like, even though only one is authorized to generate the block.

A block is considered irreversible once 21 witnesses approved it. That means one producer and 20 verifier. Currently all witnesses run in a trustless mode, so they will verify all other produced blocks. When a witness starts the first time, it will verify the whole chain.

The idea that votes are weighted by activity is nice in terms of someone suddenly trying to instantiate a bunch of accounts all at once to influence a vote, but then it certainly seems dangerous that high-reputation accounts have more influence than normal folk.

DPOS means delegated proof of stake, so it is determined by stake, not by aktivity. You can argue that a minority with a lot of funds has the most power, but they also have most to loose by faulting. If I own one million of all invested steem, my witness votes will be pretty influential. But if I make a wrong move, that will hurt my one million a lot.

Most of your questions seem like issues in the whitepaper, not in the Blockchain 😊

Good! I'd love to see a newer whitepaper with some of your answers in it. Or a blog post. or something.

I don't think I'm well informed enough to write a whitepaper or a blog post about the topic 😅 that would mean going into detail.

But I can answer most of your questions 😊 and maybe someone with all the right knowledge makes a post about it.

Dang it! I'm so sorry @uberbrady. I didn't see a notification about this reply, though I had checked back a couple times looking for it. Sorry for not getting back to you sooner.

I certainly don't assume you're dumb. Far from it. If my communication style implies that, I really need to improve there as that is not my intention. There's a huge difference between dumb and ignorant (currently uniformed would be a kinder way to say it).

re: rewound

Every time a node starts up, it has to replay the entire blockchain from the genesis block and veryify transactions fit the protocol. A fork in the code which evaluates those transactions which are being received from other seed nodes distributed throughout the world can then decide if a transaction is valid or not. If a transaction is received which the code determines is invalid, it will not be included in the history of the blockchain for that node. If all other nodes agree to that, then they will all have the same hashes and will all agree on what the "true" history is. This is how all blockchains work, so it's not unique to POW or DPOS. I'm not implying you're dumb by saying you don't yet understand how this works. It's complicated stuff.

Let's start from the beginning. After reading the original bitcoin white paper, you understand how the blockchain history works. The choice of DPOS over POW is just a matter of different ways to create a new block of valid transactions. The fundamental concepts of what is allowed and what is not is still the same, such as transactions have to have valid signatures before they can be included in a block and signed by the block producer. Maybe you're wanting to see the specific line of code which validates transactions to ensure the signatures match? Maybe I'm making too many assumptions that the STEEM blockchain is in fact a blockchain and follows these same validation principles?

Seems to me your question is more like: "Is STEEM a blockchain?" My answer is yes. To truly verify that, you could go through the code of the steemd client and ensure there's nothing malicious in there which would create circumstances where witnesses and nodes could somehow skip the validation process.

Again, sorry for not replying sooner. I really liked this dialogue and spent a lot of time on it. I was eagerly waiting for your reply and totally missed it. :(

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63651.41
ETH 2679.55
USDT 1.00
SBD 2.80