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

区块链是分布式数据存储、点对点传输、共识机制、加密算法等技术组成的一个技术。
存储的方式是把数据进行一个加密生成一个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] 也修改了,这不就满足篡改了吗?

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

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

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

比特币挖完后,共识机制还如何继续进行?

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

1 Like

这个是不可篡改的保证之一,并不是最关键的部分。最关键还在于区块链的多副本的共识。这样的共识是发生在多个互不认识的共识节点之间的,所以即使篡改了整条链的的 hash,在没有同谋的情况下,这样的篡改是不被外部观察者承认的。

这个问题的核心是分布式和去中心化之间微妙的区别。物理或逻辑上计算的分离或数据副本的分离可以称之为分布式结构;而去中心化更多地是描述一种权力的状态,无论对数据进行增删改,乃至有些还限制了查,都需要多个节点进行确认,而在现实中这些节点不是由一个中心化机构进行控制,而是由多个权力分散的机构或者个人进行控制。

只是不可篡改也不是必须分布式数据存储。有很多密码学技术可以达到“不可篡改”。但你需要清楚的是,这些“不可篡改”实际上是有区别的。脱离假设讨论安全是没有意义的——有些“不可篡改”可以在存在可信第三方的时候达到,但一旦没有这样的第三方,数据就很容易被篡改;而有些“不可篡改”不需要这样的可信第三方来进行保证。

另外,区块链共识机制的最重要的作用是实现去中心化数据结构下的数据一致性,这和中心化分布式共识机制不同——中心化分布式共识机制不需要考虑拜占庭节点,也不会发生女巫攻击。

不矛盾啊,共识机制不浪费,我上一段已经说了。共识机制是保证“去中心化结构下数据一致性”的算法,所以当你有业务场景不得不用到去中心化结构时,基本上共识算法是必要且重要的。所以问题就落到了什么样的场景是必须要去中心化结构的。这个例子我们可以直接举比特币,如果我想要创造一个不受任何央行控制发行的货币,我该怎么做?如果由央行(中心化机构)发行货币,会有种种弊端(你可以 Google,有很多文章)。现在我想避免由单一机构控制发行货币,那么我就得构造一种去中心化的结构,有多个实体控制货币发行以及交易结算。但是问题又来了,怎么保证这些实体不会因为一己私利而多印钞票乃至双花呢?毕竟这些实体没有什么信用保证,有些甚至都不知道是谁在哪。这就需要区块链共识算法了。

迅雷我不知道,不了解也不关注。

比特币挖完会关系到对矿工的激励,挖完之后矿工仍然可以获得交易手续费,但这样的激励是否足够是一个值得讨论的问题。

谢谢,看了这个后,对区块链有更深一步的认识了。

但是区块链技术一直强调去中心化结构,那国家突然间大力推广区块链技术,是否更看重的是数据进行分布式管理,例如通过多个服务器管理数据,去除中心化结构,但是实际还是由第三方看管着。而并非像比特币那样,谁都有机会做旷工的机制。

就好比现在央行基于区块链技术发币了,可是实际控制权仍然是在央行手里,而区块链干的事情,就是把数据分布存储了,不需要集中管理,这样安全性会更高。

这个央行数字货币具体我也没有了解过。。。但据我所知,尽管区块链技术的核心在于去中心化,但似乎有一种观点认为,区块链技术布置在中心化的机构中仍然有它的意义——譬如结算效率更高,中央机构维护费用更少等等。上述解释只是我的道听途说,有可能并不准确。