区块链设计模式系列(五)跨链

联盟链在技术上和理念上都有别于公链。公链通常只有一个主链,比如我们只要说起以太坊,大家都知道是指的那一条链。但是联盟链是作为一个软件产品,初衷就是为了尽量多的卖拷贝,希望让大家多部署一些链的实例。
出现多链的场景之后,下一步自然就是怎么把这些链连接起来?

联盟链的节点通常对应一个企业,所以在链内部,我们更多的是讨论作为节点的企业之间的关系,即链上治理部分。
但是当我们把视角拉高,将一个一个的联盟链视作一个一个的个体,我们会发现,跨链其实跟传统的IT系统互联并没有什么差异。
比如,我们使用A公司的系统的时候,是完全不用关心A公司内部的情况的。A公司是老板一言堂,还是夫妻店,或者是先进的股份制?这对我们都没影响。我们只需要关注A公司一些很宏观的性质就可以了,比如有没有相关的资质?营业情况是否平稳?公司通过法律等非常强有力的束缚,将一群本来不相干的人捆绑在一起,形成一个集体形象。
A公司与B公司之间的业务往来,前提是相互信任的,如果没有这个前提,那也无法达成合作。但是A公司不会轻易相信公司B的某一个人的承诺,得写成合同,然后盖上B公司的公章。这样这个承诺就是B公司承担的,而不是其中的个人承担的。同样的,A公司也不会只有一个人去检查合同,万一看走眼碰到萝卜章呢?所以A公司内部也会有一个流程,一般要经过多个人的确认。

联盟链的跨链其实跟前述流程是一模一样的。
首先两条链之间要相互信任。建立信任的方式就不限了,有很多,比如:传统一点的签合同;或者上面再有一层联盟链来做注册中心的套娃模式;去中心化一点的到一个公链上去抵押token做仲裁。
A链给B链传递信息要附带密码学证据,以证明这些信息经过A链共识节点的共识,代表的是整个A链,而不是其中的一个节点。B链接收之后要验证这个密码学证据,同样的,也不能只让其中一个节点验证,而是要所有共识节点都验证才行。

这其实是一种非常有共性的模式,所有群体对群体的场景都会有这个模式。两个帮派打架,大家得先问问对方,你是冲某个人来的,还是冲着帮派来的?两家的子女要结婚,商量事情也得先问问,这是你个人的意思,还是你们家的意思?

如果说最终跟传统方式是一样的,那用联盟链有什么价值呢?

首先公司这种方式代价非常大。公司一般都要给员工做大量培训,因为去见客户的时候如果表现不好,客户不单单会认为这个人不行,进一步会认为这个公司不行,“出去就代表公司”这句话并不仅仅是说说而已。公司还要跟员工签署各种劳动合同,保证员工对公司的投入;签署各种保密协议,保证员工不会泄露公司的机密。从人力资源的角度来说公司像防贼一样防着员工,也是没问题的。但是即便这样,依然会不时出现一些员工作恶的情况。
多个公司组成的联盟之间的合作就更不用说了,效果更差。
但是社会分工越来越细,上下游越来越长,通常需要多个公司,甚至是多个联盟之间的合作,这里面的效率是亟待提升的。

另一方面,联盟或者公司内部的制度其实也是很重要的。前面举的例子不太恰当,作为消费者,我们不用太关心公司内部的情况,那是因为我们投入少,风险小。投入稍微大一点,比如办个理发店的卡,大家也会觉得连锁店要比夫妻店要靠谱一些。
还有我之前举过的一个例子,为什么支付宝是中心化的,大家也愿意把钱存在里面。因为支付宝是个正规的公司,有完善的财务制度,马云也没法直接把我的钱划走。

联盟链其实就是这些管理制度的技术化体现。比如前面提到的,你是代表个人,还是代表背后的集体?很简单,把数字签名拿出来验一下就知道了。