瞎扯淡 探探我理解的区块链和它的问题。

QueXuQ · 2019年11月03日 · 最后由 QueXuQ 回复于 2019年11月04日 · 4363 次阅读

区块链是分布式数据存储、点对点传输、共识机制、加密算法等技术组成的一个技术。
存储的方式是把数据进行一个加密生成一个 hash 作为标签,这里用 SHA-256 吧。然后通过 hash 进行链接。

Prev Hash:
Data:Genesis Block
Hash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3
--------------------------------------------------------------------------------
PrevHash:89eb0ac031a63d2421cd05a2fbe41f3ea35f5c3712ca839cbf6b85c4ee07b7a3
Data:Jack send 1 BTC to Sam
Hash:ad3ebab374b25e6f3d4f0f14465ff3f86020ce036b5b538c2a506de800dac524
--------------------------------------------------------------------------------
PrevHash:ad3ebab374b25e6f3d4f0f14465ff3f86020ce036b5b538c2a506de800dac524
Data:Sam send 2 BTC to lili
Hash:f9ba725838192731e73b8f28b33c88be9798c314ea7a538fc77e80039413b872
--------------------------------------------------------------------------------

上面举例了 3 个数据,Hash 就是对 Data 进行加密出来的结构,而 PrevHash 则是上一个数据的 Hash,在保证:

Hash[index] == PrevHash[index + 1]

的情况,形成一个链式结构。

就上面的数据结构来看,就是一个有规则的数据,但是单纯的数据结构形式存储,还不能叫区块链,最多叫账本。至少要把分布式数据存储,加入才算区块链。

那么问题来了

为什么说上面的存储方式就是不可篡改的?
网上说的情况基本是因为验证的存在,因为Hash[index] == PrevHash[index + 1]这个公式不成立了,所以修改是无效的。那如果我同时修改Hash[index]PrevHash[index + 1],甚至把Data[index]也修改了,这不就满足篡改了吗?

怎么才叫去中心化的分布式数据存储?
其实就把这种数据结构存在自己的服务器里,也是可行的,但是因为中心化的问题,会导致服务器被黑,数据也被黑,或丢失,所以这时候分布式数据存储的作用就出来了。 可是实际应用中,如果是自己的多个服务器进行分布式数据存储,那也是中心化啊。那如果像比特币那样,所有钱包都保存所有记录,文件会非常大,这显然是不合理的。那所谓落地的应用,像什么开发票啊,电费啊,这些,最终不就还是存储在自己的服务器上,也是中心化了吗?

必须共识机制吗?
如果我目标只是实现不可篡改,那是不是必须分布式数据存储,那如果是一个中心化的分布式数据存储,那共识机制的意义又在哪里呢?

什么情况才必须是区块链技术实现?
如果非得区块链技术实现一个事情,还必须去中心化,必须分布式数据存储,那感觉共识机制就是一个非常浪费的事情,那如果把确认数据交给自己处理,那又中心化了,违背了一开始想做的事情。感觉其实整个逻辑还是很矛盾的。所以有谁清楚举个例子说说落地的区块链项目都是怎么选择的,例如迅雷。

有什么学习区块链的推荐吗?

  • 因为没有区块链分类,所以在瞎扯淡了。

👍 推荐一个地方给你,说不定能给你启发 https://talk.nervos.org/c/45-category

lgn21st 回复

多谢,看着好像人气不太够的样子。😂

😄 本来就是账本,区块链特点是去中心化,即每一个用户都相当于一个节点. 你这里修改 HASH 值,只是修改了本身的区块信息,当你交易和全网所有其他节点拥有的区块信息确认对比时,如果没有超过半数的区块和你区块信息的相同,你的区块就不会被承认的. 当然修改也是可以的,你的算力能超过全网算力的一半,但目前看来这样的代价比收益还高。倒是量子计算机有可能。

https://github.com/chaozh/awesome-blockchain-cn

puma 回复

这个 github 不错。谢谢。 所以其实没用到分布式数据存储的话,数据其实就是可以修改的。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号