阀值签名实现
与Oraclize等中心化的可信数据源不同,Chainlink所要做的是「去中心化」的可信数据源,透过网络中的各个节点搜集现实世界的数据,并将结果输入智能合约,保障数据的可信与合约的有效性。然而,在目前的构架中,Chainlink可扩展性并不理想,节点会先各自将数据上传到链上聚合再整理出结果,这会导致什么问题呢?
举个例子,假设合约创建者需要来自2000个节点帮他搜集数据(合约创建者可自己设定数据源的节点数量),那么过程中所需要的以太坊燃料费可能会超过3000美元,简单来说就是成本太高了!且经过测试,目前链上聚合技术上也无法支持2000个节点同时参与一项任务,最多只能45个。
另外一个问题是,如果合约创建者需要2000个节点帮他搜集数据,但其中有200个节点因不明原因没有工作,最终只有来自1800个节点的数据,导致数据源与预期不符,合约创建者此时就会陷入两难,一方面数据源数量跟他预期的不同,他可以干脆要求重新收集,但1800个节点的燃料费都花下去了,合约创建者若要求重新搜集就又要再付一次费用,这会造成合约成本暴增。
阀值签名所要实现的就是可扩展性的解决方案。阀值签名与多重签名合约相当类似,其概念是将节点分组,每一组节点都会生成一对私钥与公钥,若想要将数据上链,就必须要有这把私钥,私钥则不归任何人所有,只有在搜集完该组节点一定数量以上的签名后,才有办法透过这些签名生成私钥,并对数据加密,生成共识结果的证明后才能上链。
原设计
加入阀值签名后
还是上面的例子,合约创建者需要2000个节点的数据源,于是这项任务委派给了由2500个节点组成的小组,只有当2500个中的2000个节点搜集完数据,才能够上链,这解决了数据源与预期不符的问题,且数据是在链下搜集完一次上传到链上,因此也解决了可扩展性的问题。
总归一句,阀值签名将能够帮助用户节省大量成本,并让Chainlink在实际业务中带来更多应用场景。
点击关注币海启行微信公众号,了解更多