[Blockchain-4] 17-USENIX-REM:Resource-Efficient Mining for Blockchains
作者:互联网
1 文章内容
文章问题切入点:
1. 传统PoW尽管具有强的稳定性
2. 但是在实时世界中面临巨大浪费:
- 支付电费的经济开销
- 运行挖矿的设备开销
PoW的替换协议:
1. 准入性系统(BFT:拜占庭容错)
- 带来中心化
2. PoS(股权证明)
- 需要解决“nothing-at-stake”问题
3. Proof of Storage(Space)
- 消耗存储空间替代计算开销
作者的思考:
1. 达到PoW稳定性的同时不产生资源浪费
2. 引入PoUW(Proof of Useful Work)+ 可信硬件(SGX)
- 将挖矿做的工作替换为有用功
Intel SGX:
1. Intel SGX全称是Intel软件保护插件
- 被称为可信空间或“飞地”(Enclave)
- 作用是保证存储在内的数据与代码的安全
2. 具体功能
- 保证代码和数据的完整性(其他软件甚至操作系统无法入侵)
- 保证代码和数据的保密性(其他软件甚至操作系统无法知道Enclave内部状态)
3. SGX重要功能:远程证明
- Intel为每个SGX分配相应的密钥以及相同的组密钥
- 指纹代表Code和Data的哈希值
- 每个SGX-Based CPU对指纹进行组签名
- 远程用户可以验证签名,确定代码和数据运行在Enclave内
SGX-Based区块链:一种全新的安全模型
1. 准入性
- 任何拥有SGX-Based CPU的用户均可以参与
2. 部分去中心
- SGX-Based CPU 由Intel公司生产
- Intel公司负责给SGX分配相应密钥以及管理组签名
3. 强假设
- Intel公司不会与人共谋或做出对用户有损害的操作
相关研究PoET
1. PoET(Proof of Elapsed Time):时间流逝证明
2. 特点
- 通过让CPU休眠来模拟PoW
- 一致性达成以部分去中心的模型实现
- 理想情况下低开销(CPU休眠)+随时挖矿(运行其他工作同时可进行挖矿)
3. PoET面临的未解决挑战
- 陈旧芯片问题:由于CPU休眠挖矿,新旧CPU无本质区别,用户倾向于使用过时的便宜的SGX-Based CPU进行挖矿
- 破损芯片问题: SGX也存在例如旁路攻击等安全隐患
作者提出的REM系统
1. REM全览
-三个实体:有用功客户端,区块链代理,矿工
2. 工作流程叙述
(1)区块链代理从P2P网络获取交易信息
(2) 区块链代理收集交易后生成区块模板发送给矿工;同时有用功客户端产生有用功任务也发送个矿工
(3)矿工接收到区块模板以及有用功任务生成有用功证明(PoUW)后告知有用功客户端
(4)然后矿工将生成的有用功证明(PoUW)发送给区块链代理
(5)区块链代理接收到PoUW后生成新的区块并广播到P2P网络
(6)远程用户可以对任意区块进行验证:
- 验证区块的PoUW本身是否正确
- 验证有用功代码是否合规
REM系统核心——PoUW
1. PoUW的特点
- 将传统PoW(运行哈希计算)替换为有用的挖矿任务
- 每个有用功单元(CPU指令)进行伯努利测试
- 伯努利测试产生相似的指数出块时间
- 通过CPU指令计数衡量有用功大小
2. 安全指令计数
- 面临挑战:需要满足任意程序作为有用功,可以实现公开的验证
- 采用机制:动态+静态的程序分析
动态分析过程:
有用功客户端将程序P通过REM系统实现的自衡量测验(Self-metering instrumentation)得到经过测验的程序P’。其中自衡量测验的两个基本条件是程序必须满足不可写的权限且必须是单线程。
3. Miner在SGX-Based CPU执行的工作
整体流程:
上一步得到的经过测验的程序P’结合区块头部作为PoUW Enclave的输入;首先是Enclave内部进行程序的评估,然后得到此有用功程序运行的指令数n,然后模拟n此伯努利试验(每条指令都有挖矿成功的机率p);若有一次成功则输出PoUW。
4. 层次测试
- 对SGX-Based CPU生成的PoUW的进行验证
- 对有用功程序的合规性检查(需要程序代码P’)
层次测试引入合规性检查者(Compliance Checker),以多个程序作为输入,为已经通过动态分析过程中自衡量测试的程序添加合规性签名(即compliant),结合运行该程序生成的PoUW合并为最终的PoUW(=Validity+Compliance)
REM系统——解决破损SGX节点
- PoET里面:采用统计测试挖矿频率
- REM:简单统计测试策略-Pstat
理解Pstat策略:
- 输入当前区块链以及一个生成的区块,输出接受或拒绝当前区块
- 伪代码最重要的一行判断语句:若由矿工m挖矿的总数大于挖矿率最大的SGX-Based CPU在单条指令挖矿成功率为Alpha时候挖矿数目,则认为此矿工m为恶意用户,当前CPU为破损的。
实验部分
1. 敌手的优势
- 定义为敌手挖矿数与诚实用户挖矿数的比值
- 随着时间增长,两者的挖矿数目都在增加,敌手的优势逐渐降低
2. 此策略的浪费
- 定义为错误拒绝率:诚实矿工挖矿被拒绝的比率
- 随着时间增长,错误拒绝块数逐渐增加,错误拒绝率逐渐降低
3. REM系统的性能
- 实验设置:四种程序作为有用功程序
- Naive:代表四种程序直接运行在无SGX CPU的Linux主机上
- 结论:REM系统将传统PoW的无用功转化为有用功,同时只增加了5%-15%的额外运行开销
2 生词
- masquerading 伪装;冒充
- falsify 篡改;改造
- esoteric 深奥的;机密的;只有内行人才懂的
- impediments 障碍
- pharmaceutical 药物的;制药的
- invest capital and operational funds 投资资金和运营资金
- unilaterally adv.单方面地
- bake sth… 制定…
- be starkly different from… 截然不同于… starkly-赤裸裸地;严酷地;明显地
- concatenate adj.连锁状的 v.使(成串地)连结起来
- implausibly 难以置信地
标签:SGX,Mining,Resource,有用功,17,PoUW,区块,CPU,挖矿 来源: https://blog.csdn.net/KoalaZB/article/details/88667383