这篇博客探讨了跨链技术的挑战,分析了区块链去中心化和信任机制如何影响链间信息交互,并提出了BTC Relay、网关+中继链和预言机等解决方案,强调在实现跨链时需平衡去中心化与安全性。
跨链听上去是一个简单的事情
跨链最基础的目标是,某一条链上发生的交易在另一条链上被认可,也就是链二同意链一上发的交易确实发生,然后以此为基础做一些操作,实际上就是链二能接受链一上产生的交易数据。
就单纯的用数据库来说,只需要链二提供接口给链一的客户端查询就可以了,就像支付宝能查到你银行卡里面还有多少钱一样。(当然这个实现得应该也挺复杂的,需要多层的身份认证–支付宝需要认证用户身份,银行需要认证支付宝身份,支付宝还不能拥有用户的银行身份),不过总归是有一个合理的实现。但是,对于区块链就不一样了。
为什么链间的信息交互这么难?
在我看来,原因大概只有一个,区块链是一个去中心化,去信任的机构。
区块链内部本身就是节点间相互不可信的(当一个集体中相互之间都不信任,这时候少数服从多数就是一个很明智的共识,人越多,互不信任的越强,系统就越安全,当然区块链也设计了很多方案防止有个别人注册大量账户,冲大头),所以区块链的信任取决于而大多数节点真实的判断。
如果没有做出真实的判断就有可能受到共识算法中设计的惩罚,所以更多的节点愿意向组织提供真实的数据(这个涉及到区块链的奖励机制),除非有人提供超过奖励机制的钱给大多数节点,形成一个独权结构产生错误的结果。
所以区块链本生是不相信任何单点信息的,也就是说我们大可以在链上设计节点做 spv 验证,但是,来自少数节点的 spv 认证不会被大多数仍可,当然也可以设计成其他节点默认认可,但这将导致少数几个节点成为攻击的对象。
总结一下也就是:最终决定不能是少数节点认可的。
于是乎,最简单的解决方案就是让链上的大多数节点都能作为 spv 验证节点,来解决这个问题,但这样一方面会导致链上节点过于庞大,并且对于收费链来说也将消耗大量代币,
第一个解决方案 btc relay
想法很简单,只要一条链上拥有另外一条链上的全部区块头,那么在链上认证时只需要验证一下默克尔树就可以了,这样每个节点都可以非常简单的认证区块信息。
但这有存在一个问题,谁来提供这个区块头,是一个人提供吗,如果是这不又是单点信任问题了吗?
实际上这个项目最终真的是只有一个人在提供区块头(刚开始的时候人比较多,能在一定程度上做判断,如果有而已提供者也能发现出来),但是是每次向etc写入区块头都要消耗gas(钱),很多relayer放弃。所以在最近两年,最后一个relayer下线,btc relay dead。
btc relay的尝试向我们展示了跨链到底有多难,但他也慢慢暗示了区块链跨链比较大的可能性。
简单分析一下btc relay 给我们什么提示了。
- 链间不依赖中间方的信息传递几乎是不可能的。
- 跨连通信并不需要某条链对另外一条链的交易达成共识,只需要一个能证明交易发生的数据即可。但这个数据又有可能存在单点信任问题。
- 要解决上面提到的单点信任问题,那么向链提供数据的结构就得是个去中心化的机构。
套娃跨链:因为去中心化的去信任关系,那么,这个去中心化的机构与链的数据交互就又需要一个去中心化的机构做桥。
网关+中继链
网关+中继的方案是目前比较普遍的方案,向bitxhub就是典型网关+中继,这里目前不做展开,但感觉还是有点问题,如何保证网关不会出现问题呢,如果黑客入侵了某个网关,制作虚假的信息,中继链好像也是判断不出来。
预言机跨链
后面两部分等我了解更多再写。
但目前可以大概总结一下我的观点
如果能加入网关,那么将会省很多事,而且网关几乎可以完成所有的链上操作。但网关将会带来一个极大的不确定性,并且网关存在中心化的风险
我认为网关需要保留,即使他的短板很明显,目前我个人干就需要处理的是削弱网关的权力,减少网关勇有的权限,比如说对交易进行hash锁定。另外还需要增加机制校验网关的忠诚,我个人感觉预言机在这方面可能有用武之地。