一、技术背景
外包计算是一种算力委托方式,拥有计算资源的一方通过出售算力来获取收益,而算力不足的一方可以将计算的数据和方法传输给算力出售方进行计算,得到计算结果。
计算结果可信是一个非常重要的前提条件,即如何确保计算方严格按照提供的数据和方法进行计算,而没有伪造计算结果。传统的外包计算,一般采用三种方法实现计算结果可信:
1)直接依赖计算方的公信力,其问题是不能利用非信任方的算力,存在可能因软硬件故障导致的计算错误,没有技术上的可靠性保证。
2)依赖可信执行环境的硬件手段,其问题是仅支持拥有特定硬件资源的计算节点,算力资源较少,成本高昂。
3)使用复杂的可验证计算技术,其问题是计算量相对原始计算呈数量级增长,导致计算成本过高,且一般仅针对特定计算,适用范围具有较大的局限性。
区块链技术是一种分布式的账本技术,具有安全、透明、不可篡改的特点,链上数据可接受用户监督审查,具有可信力。智能合约是存储在区块链上的程序,总是按照预订条款和条件自动执行,得到确定性结果,避免人为干扰。
二、区块链方案
利用区块链的公开透明、不可篡改、可追溯特点,计算节点在区块链上进行算力注册形成算力资源池,计算服务平台对计算任务进行分片,生成随机数,计算分片冗余度,将计算任务分片随机冗余分发给算力池中的计算节点进行计算,计算节点完成任务计算后,提交计算结果验证数据到区块链进行验证,实现计算结果可信。
图一、区块链的外包计算结果可信方案
算力注册是指经过算力评估的计算节点在区块链上公开登记算力,形成算力资源池,提供给算力服务平台进行统一调度。
算力评估是对异构计算节点的计算资源、存储能力、网络带宽的综合测算,形成统一的标准化算力单位。
任务分片是指将计算任务拆分为一个个小任务,方便调度算力资源池,同时可控制数据冗余的粒度。分片可以进行大小拆分、耗时拆分、不定长拆分、交叉拆分。
随机数生成的作用是进行计算节点的随机选取,实现公平调度和防止联合作弊,同时可用来控制冗余度概率密度分布。随机数具有可验证性和延迟性,可采用区块链的公开数据源(如块Hash等)结合提交者的秘密数据进行计算,并执行两阶段提交实现延迟验证,第一阶段提交随机数的不可逆映射值(如Hash值等),第二阶段提交计算使用的公开和秘密数据用于验证。
分片冗余度指的是同一任务分片分发给不同计算节点的冗余数量。冗余度可以依据算力池资源进行计算,算力高冗余度高,算力低冗余度低。也可以根据任务提交方的质量要求进行计算,质量要求高冗余度高,质量要求低冗余度低。系统可以设置最大最小冗余度参数来控制冗余度的上下限,防止资源浪费和计算节点联合作弊的概率。可以使用不同概率密度分布,达到不可预测性;可以使用长尾分布来降低计算节点联合作弊的概率。
任务分片分发是指把拆分的任务数据分发给选取的计算节点。任务分片的分发可采用中心化客户端-服务端方式,也可采用去中心化的分布式存储。可以分发多个连续或非连续的任务分片给同一个计算节点。可以对冗余分发给不同计算节点的同一任务分片使用不同的混淆、加密、盲化处理,防止计算节点联合作弊。可以对数据增加隐私保护手段,实现隐私计算。
计算结果验证是提交可验证数据到区块链进行公开验证,可验证数据是计算结果的不可逆映射值(如hash值等),公开的是验证过程而不是计算结果,实现计算结果隐私保护。采用智能合约实现自动化验证,可以根据验证结果对恶意提供错误结果的计算节点进行惩罚,惩罚不限于保证金抵押机制、质量评分机制。
三、结论
区块链上的计算可信方案解决了现有外包计算结果可信需要依赖于计算方公信力或计算成本过高的问题,充分利用了区块链的公开透明、不可篡改、可追溯特点,将无需信任的分散算力,组织成不断扩张的算力资源池,提高算力使用效率,实现外包计算的计算结果可信。