发布时间:2023-12-18 08:00
每个矿工都由随机选择的陪审团监控,陪审团根据网络要求的信任阈值评估矿工的声誉。
挖矿不是基于竞争,矿工循环序列。分叉概率小,发生分叉用Ethereum GHOST解决
实验结果【p30】
验证时间: 6-13ms 均值 9.789ms
挖矿时间:两个块时间戳的差值 在 0-12s 均值5.462s
表明:相同大小的网络时,模拟器与私有区块链网络表现相似。
访问控制,我们从三个方面评估了节点数量增加时的网络性能:节点进入网络的时间、节点成为矿工的时间以及执行控制事务的开销。
(M矿工数量,N节点数量)
1.访问控制
(t1 申请访问的时间戳)
1)新用户生成一对非对称密钥(sk,pk)。密钥用于对网络上的节点操作进行签名,公钥用作节点标识和节点地址。因此,必须通过以下入口事务将PKI发送到网络
2)一名矿工验证
(t2 同意加入的时间戳)
3)所有节点将新节点的公钥添加到标识密钥列表中,新节点作为公共节点加入网络,然后公共节点可以请求访问区块链的全部内容并生成交易。
2.矿工选择<最佳1/3 *N全网节点数>
(t4 验证成为矿工的时间戳)
矿工是所有节点的一部分(按比例),期待
根据成熟度标准选择“老结点”(长时间表现好)
3.陪审团选择(1/4 * N 全网节点数)
每一个矿工都有一个陪审团去监控和判断。
用不可逆的伪随机的选择陪审团【Bloom Filter】
m bits 和 hash functions
1个 hash函数 映射向量中1个 1 的位置,不同的哈希函数可能会映射到相同的向量位置。
假阳性
先对矿工的公钥hash, 前m bits 填充到bloom filter 表中
对node的公钥hash,判断是否在 miner 的 bloom filter 中
4.矿工监测
node 监测 miner ,并对其打分。
miner 的公钥 添加到 trust table中,初始分R0 = T(阀值)
奖励 和 惩罚的 分值 是一个难点
5 驱逐恶意矿工
(t5 投票签名的时间戳)
1)judge node 发起投票交易
2)投票交易被验证和挖掘
3)全网删除恶意节点的key
信誉分低于阀值 投票驱逐
半数以上人同意就可驱逐。最后一个同意的judge node 将 驱逐意见打包成块,当块被挖掘时,所有结点移除被驱逐结点的地址,丢弃它的公钥。
最后一个judge没有发布驱逐交易,就由倒数第二的jusge发布,以此类推。重新加入时,从node做起。
评估
1.矿工循环序列,通过 t4 (成为矿工的时间)确定序列顺序。每个矿工被分配到一个步骤。因此同步循环。 当一个新步骤开始,该步骤中的矿工(leader)必须验证新块并广播。用时间上限保证活跃性。除了当前的leader,序列中的下一个矿工可以在每个步骤中提出新块。每个miner只能提出一个块的M * 2/3 步,避免恶意矿工产生不规则块,M是miners数量因此,同时最多有M/3个miners allowed 同propose a block
为了避免分叉,①非leader 提出的块被随机延迟②leader发布的块评分更高
安全性分析:
1.51%攻击。
(攻击者注册51%用户,必须等待,直到她的节点根据成熟度标准成为矿工。期间正常节点也可能成为矿工,这就需要攻击者引入更多节点。产生恶意行为后要继续作为矿工,必须控制一半以上的法官,法官是随机选择的,这就要求攻击者几乎控制网络中所有节点。)
2.自私矿工攻击稳健性<让攻击者成为恶意矿工,选择要挖掘的交易,并在其挖掘回合中忽略其他交易。>
(由于矿工之间的采矿轮换,攻击必须持续一轮。轮换中的下一个合法矿工将开采最古老的交易。一旦确定一名自私的矿工,法官将惩罚她的名誉和/或投票驱逐袭击者。)
3.Eclipse attack soundness
4.双花攻击
(矿工循环序列)
5.拒绝服务攻击
(时限)
6.模拟攻击<嫁祸>
(获取其他矿工私钥难,尝试获取私钥及篡改块的transactions会被记录)
7.selection of judges attack soundness<维护特定miner声誉>
(成功概率呈指数增长)
8.审查员投票或驱逐攻击可靠性
(挖矿频率3/M,确保控制51%miners 几乎不可能)
9.驱逐值得信赖的矿工攻击
版本通告|Apache Doris 1.1 Release 版本正式发布!
Python 实现循环的最快方式(for、while 等速度对比)
java基础巩固-宇宙第一AiYWM:为了维持生计,手写RPC01~Version01整起
PyTorch学习笔记:RuntimeError: one of the variables needed for gradient computation has been modified by
《动手学深度学习-pytorch》书中定义函数后加#@save的含义
[ vulhub漏洞复现篇 ] JBOSS AS 4.x以下反序列化远程代码执行漏洞CVE-2017-7504