【问题标题】:Hyperledger Fabric world state, is it immutable?Hyperledger Fabric 世界状态,它是不可变的吗?
【发布时间】:2021-12-31 07:28:45
【问题描述】:
在区块链技术中,我们了解到区块是不可变的。在Hyperledger Fabric 中,我们有使用GoLevelDB 或CouchDB 实现的世界状态。
首先,据我所知,我可以删除Chaincode 中的密钥对。那么,它真的是不可变吗?
其次,在Bitcoin 和Ethereum 中,所有数据都包含在块中,并且嵌入在下一个块中的块中的所有数据的哈希使得不可能轻易地更改先前的块。那么,世界状态与 HLF 中的块有何不同?世界状态数据库能否使 HLF 容易受到攻击?
【问题讨论】:
标签:
hyperledger-fabric
blockchain
ethereum
immutability
【解决方案1】:
世界状态基本上只是所有先前交易的结果状态。通过删除 Chaincode 中的 key-pay,您只需执行一个交易,该交易告诉“现在这个密钥没有存储在 state 中的值”但所有以前的交易仍然存在,这基本上就像你放让我们说通过某个键在某些以太坊映射中的空字符串。
【解决方案2】:
-
immutable 指的是所有发生的交易。您无法更改任何过去的交易。世界状态基本上是数据的最新视图(键值对)。与不可变性无关,如果世界状态是不可变的,那怎么会有新的价值,对吧?
-
当然,它们以相同的方式工作(因此,世界状态不存在易变的漏洞)。虽然 HLF 不使用工作量证明来计算 nonce,但所有块都包含前一个块的哈希,从而形成“链”。您可以参考文档关键概念“Ledger”部分来进一步研究区块中的内容。
【解决方案3】:
Hyperledger Fabric 世界状态不是一成不变的,它仅意味着拥有最新状态,因此您可以根据当前状态快速提议或认可交易。
如果您故意篡改并删除任何键或更改世界状态中的值
- 如果您在不涉及被篡改记录的情况下继续进行交易,则在执行涉及被篡改记录的任何交易之前,您的世界状态中可能会继续保持错误。
- 如果您根据被篡改的记录提出交易,其他节点将不会为您的交易背书。
- 如果任何其他节点提出涉及被篡改记录的交易,将导致您的恶意节点无法对交易进行背书,但如果其他节点提供必要的背书并且交易通过,世界状态将自动更新并撤消篡改。
希望这可以澄清。