找回密码
 立即注册

扫一扫,登录网站

首页 区块链生态 查看内容
  • 19069
  • 0
  • 分享到

关于区块链底层架构的讨论 DApp的现状与困境解读

2019-8-23 11:38

来源: DAPP实验室

DAPP分片的难题 —— 跨片交易完整性



八、分片的难题 —— 跨片交易完整性


在分片的方案中,每个分片上可以运行一到多个 DApp,不论 DApp 在不在同一分片,都要能互操作。首先要明确什么是跨片互操作?因为分片也都是区块链,所以跨片等同于跨链。

大家知道区块链可以看成是分布式共识维护的状态机,状态机通过交易执行完成状态转移。跨链的互操作应该引发双方的状态转移,也就是两个互操作的链都执行了交易,而且执行交易之后的状态具有一致性。

或者说一个跨链交易要引起两条链乃至多条链的状态改变,而且这些改变要么都成功,要么都不成功,不存在中间状态。这跟企业计算里分布式交易的概念上非常类似。

只不过传统分布式交易的参与者通常是多个数据库,而跨链交易的参与者是多条区块链。非技术背景的同学可能不熟悉状态机和分布式交易的概念。因为跨链交易的概念对理解本次分享的结论很重要,我再用非技术语言解释一下。

假设你要从工行账户转 1 万块钱到建行账户,这笔转账交易其实就是从工行账户上减掉 1 万,在建行账户增加一万。工行和建行各自都有数据库存储账户余额,那么就要有一个机制,保证两个数据库的操作,一加一减,在任何情况下要么都成功,要么都失败。

如果没有这样的保证,工行账户减掉了,建行账户没加上,你少了 1 万块钱,你肯定不干。如果工行账户没减掉,建行账户加上了,你多了 1 万块,银行肯定不干。

这就叫分布式交易的完整性或者原子性。简单吧?其实做起挺难的,因为不论是工行建行哪家的服务器停电、断网、软件崩溃等等,各种极端条件,都要保证交易完整。在区块链上,转账变成了转通证。

某通证发行在 A 链上,通过跨链转 10 个通证到 B 链,跨链交易完成后,A 链上的 10 个通证被冻结了,B 链上多了 10 个通证。这两个状态改变在任何条件下,要么都成功,要么都失败。

由于区块链可能分叉,跨片交易要比传统的分布式交易更复杂。我们看图,如果跨片交易在分片 1 上的部分是在 A 块里被打包,在分片 2 上被 X’ 块打包。两个分片都可能出现分叉,A 块和 X’ 块也就可能成为被废弃的孤块。也就是跨片交易可能部分成功部分失败,完整性被破坏

怎么解决这个问题呢?我们来分析一下,造成跨链交易完整性被破坏的根本原因是,交易的多个部分被打包进区块,但是链可以重组,块可以变成孤块。

说白了就是交易进了区块,但是靠不住,有可能反悔,正式说法是没有明确最终性。最终性 finality 就是区块必然被包含进区块链。

比特币区块链上,某个区块后面连的区块越多,它被逆转或者说放弃掉的可能性就越低,但是永远不能 100% 确定,所以称为概率最终性或者渐进一致性。解决这个问题的办法就是,要有机制让区块具有明确的最终性,不能含糊。

版权申明:本内容来自于互联网,属第三方汇集推荐平台。本文的版权归原作者所有,文章言论不代表链门户的观点,链门户不承担任何法律责任。如有侵权请联系QQ:3341927519进行反馈。
标签: DApp 分片 区块链
相关新闻
发表评论

请先 注册/登录 后参与评论

    回顶部