在比特币区块链中,交易只是“从X转到Y”的类型,因此我们总是会对区块链进行实际的更改。
在超级分类账中,织物交易类似于:
我确信,在某个通道中实例化链码或运行一些更改世界状态的东西,都是符合适合块的事务。我不明白的是,哪些事务可以进入下一个块。如果某些链码没有写入或更新世界状态(在RW集中,读集与写集相同)仍然可以包含在下一个块中?或者可以安全地“丢弃”?
发布于 2019-12-19 04:59:09
所有的代理节点都必须具有实例化的链码,以便能够模拟事务并创建读/写(RW)集。安装和实例化链码与常规调用是不同的事务。
调用某些事务的方式--它可以是
HF维护每个唯一键的版本控制,当我们更新相同的资产时,它会按时间顺序增加。这种版本控制( Multiversion并发控制)也避免了双重开销问题。
HF不在乎我们把什么价值作为关键(价值可以是任何东西)。
让我们假设我们必须使用关键的car1添加汽车资产,而值是{"name":"Audi", "owner":"ABC"}。当我们将事务发送到所有代理对等方时,它们将创建如下所示的RW集
Key-car1, version-1, value-{"name":"Audi", "owner":"ABC"}
当tx被提交到块链时,其中一个块将拥有此事务,当前状态数据库(Couch或level db)将为该键获取这个最新值:Key-car1, version-1, value-{ "name": "Audi", "owner": "ABC"}。
让我们假设如果我们更新相同的资产(Car1)
car1 -{ "name":"Audi","owner":"PQR"}
这里我们将所有者从ABC更改为PQR
这一次,支持对等程序创建以下RW集
version-1
version-2,value-{"name":"Audi","owner":"PQR"}一旦tx致力于区块链。同样,此事务被添加到一个块中,最重要的是,当前状态数据库将使用该最新值进行更新,旧值将被更新,版本也将更改为2。
https://stackoverflow.com/questions/59397781
复制相似问题