Some Witness Nostalgia

in #witnesses8 years ago (edited)

I was browsing the steemd.com witness page, and noticed that they are re-syncing their blockchain. I thought some users would find this pretty cool! As the site catches up, the witness page refreshes with the current top 19 witnesses at the time of the 'current block' :)


Remember to vote for witnesses:
https://steemit.com/~witnesses

Sort:  

Educate me, Tim. What does it mean to resync the blockchain. Why is it done? What is it syncing to?

Every three seconds, the blockchain produces a new 'block'. Each block is basically all of the transactions that occurred on the network (upvotes, money transfers, reward payments, etc.).

Websites like steemit.com and steemd.com will use an instance of the blockchain (usually called a 'node') to interact with. Normally these nodes are up to date with the latest block. Occasionally though, the nodes will need to resync or replay the blockchain - which basically means that they start over at the first block, re-process everything from the beginning.

Most likely, the node that steemd.com uses is in the process of upgrading to the latest blockchain version (hardfork 16), which requires the blockchain to be resynced / replayed.

Excellent explanation! Thanks!
Every tidbit of information helps me understand this place a little better. :)

yesterday @dantheman wrote a post why really good speed of rsync is so important for security of whole blockchain: https://steemit.com/steem/@dantheman/the-real-blockchain-scalability-challenge

Thank you for the link @noisy
WOW - that is some exciting development tease. But it leads me to the next question then: Dan mentioned realtime and replay performance and that the key to validate the current state is to validate the blockchain, which I'm guessing is what the sync is all about? I also understand that speed is crucial otherwise someone needs to come up with a sort of "daylight savings time" for blockchain applications, right? So what happens if something is actually corrupted and prevents a validation? My understanding is that information on the blockchain is information on a "permanent" ledger - but how might one access it if that chain is "broken"?

also understand that speed is crucial otherwise someone needs to come up with a sort of "daylight savings time" for blockchain applications, right?

I am not sure whether I understood this part. Could you elaborate on that?

So what happens if something is actually corrupted and prevents a validation? My understanding is that information on the blockchain is information on a "permanent" ledger - but how might one access it if that chain is "broken"?

This is really good question. To be honest I am not sure, how Steem blockchain would behave, but I can explain what would happen in Bitcoin Blockchain.

In bitcoin all miners nodes competes with each other to produce a block. Basically if some new transaction is not valid, then honest miner would never add this to new block, simply because network checks two things:

  • correctness of all data, whether all nodes properly validates.
  • who has latest valid block (head o the longest chain)

Please take a look on this (really good video), at least this linked part at 12m40s, about "longest chain"

Only a latest valid block can be a good "starting point" for work on new block. If I as a miner would produce a block (or 10 blocks) based on invalid block, then in theory I would earn 10 times miner reword - 10x12.5 BTC. In practice... information that I "earned" those money are only in my chain.

So if anyone would came to conclusion, that my chain is invalid, because of some earlier invalid block, then my account balance would not have those new bitcoins. So If I would like to cheat and be dishonest.. and produce next block on invalid block.. then I would have to make sure, that no one would never notice that - what in practice is impossible.

But lets assume that for some reason a lot of miners become lazy, and they do not validate old blocks. As a hardworking and honest miner I would have really good incentive to validate whole blockchain. Because if I would notice that some block is not valid, then I should immediately start mining new blocks starting with last good block (one block before this invalid). And why is that? Because if I would be only person knowing that, I could take advantage of this information and mine for example all current blocks in a day on my own, that would give me: 24×60*12.5 BTC / 10 = 1800 BTC for a day of mining :) Of course at some point I should notify all miners and say:

guys... I found incorrectness in old chain, so this is new correct chain - you mine it with me. Competition in mining is much lower and... it is only correct chain :)

What I meant by the "daylight savings time" comment is... okay - we spring ahead and fall back. It's been archaic since the advent of electricity and light bulbs but we are essentially moving time to tell ourselves we have more daylight hours. For the validation of the blockchain, if speed/time is crucial then someone's got to come up with a standardized way of "tricking" the system into believing it's faster.

I understand if a new miner is coming on board that a full validation of the blockchain is necessary, but if you're an existing miner who has already done that, wouldn't it be redundant to do it again? Why not "move time" and trick the system using the last validated longest chain. And then maybe pick a date to annually do a validation audit just to make sure it's true. Did any of that make sense?

That make perfect sense, and in fact miners of course using the fact, that they already have a validated blockchain.

But network have to care about speed of validation of whole blockchain, otherwise there would be no possibility of changing a witnesses in the future in efficient way... and they would have this role for live... and no one would even have a change to check whether their work is done correctly.

Coin Marketplace

STEEM 0.16
TRX 0.16
JST 0.030
BTC 58363.73
ETH 2484.43
USDT 1.00
SBD 2.39