区块链是分布式数据存储、点对点传输、共识机制、加密算法等技术组成的一个技术。
存储的方式是把数据进行一个加密生成一个 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]
也修改了,这不就满足篡改了吗?
怎么才叫去中心化的分布式数据存储?
其实就把这种数据结构存在自己的服务器里,也是可行的,但是因为中心化的问题,会导致服务器被黑,数据也被黑,或丢失,所以这时候分布式数据存储的作用就出来了。
可是实际应用中,如果是自己的多个服务器进行分布式数据存储,那也是中心化啊。那如果像比特币那样,所有钱包都保存所有记录,文件会非常大,这显然是不合理的。那所谓落地的应用,像什么开发票啊,电费啊,这些,最终不就还是存储在自己的服务器上,也是中心化了吗?
必须共识机制吗?
如果我目标只是实现不可篡改,那是不是必须分布式数据存储,那如果是一个中心化的分布式数据存储,那共识机制的意义又在哪里呢?
什么情况才必须是区块链技术实现?
如果非得区块链技术实现一个事情,还必须去中心化,必须分布式数据存储,那感觉共识机制就是一个非常浪费的事情,那如果把确认数据交给自己处理,那又中心化了,违背了一开始想做的事情。感觉其实整个逻辑还是很矛盾的。所以有谁清楚举个例子说说落地的区块链项目都是怎么选择的,例如迅雷。
有什么学习区块链的推荐吗?