PoW算法,请出示你的证明

口信消息型拜占庭问题的解可以防止 (n - 1) / 3 个坏人 (其中 n 为节点数)作恶,这样一来也是可以通过不断增加节点数来突破 (n - 1) / 3 的限制。为了防止这一行为可以使用区块链技术中的工作量证明(Proof of Work)算法。

原理

PoW算法,换言之工作量证明(Proof Of Work)算法,即通过一份证明来确认你做过一定量的工作。比如,你可以通过考取一张证书来证明你通过努力拥有了某个领域的专业技能。

具体来说就是,请求方需要做有一定难度的计算才能得到一个结果,验证方可以通过简单的计算来检查客户端是不是做了相应的工作。

PoW算法分为请求方和验证方两个角色,请求方首先通过计算得到一个计算结果,然后将这个计算结果发送给验证方核验;验证方收到计算结果后通过简单的计算来核验请求方发送来的计算结果是否正确。

注意:PoW算法具有不对称性,即对于请求方来说证明工作是有难度的,但是对于验证方核验工作真实性是比较简单的。

PoW使用的哈希算法

不同的PoW算法就是内部使用不同的哈希算法,在比特币圈中都是使用一些被认证过的安全算法,要么是单独使用,要么是排列组合使用。

SHA256

SHA-2安全散列算法2(Secure Hash Algorithm 2)由美国国家安全局研发的一种密码散列函数算法标准,向上它属于SHA算法之一,是SHA-1的后继者;向下它有可分为SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256六个不同的算法标准。

串联哈希算法

所谓串联就是将多种哈希算法串起来使用,2013年夸克币发布时就对输入数据进行了九次哈希函数的计算,即将前一轮计算的结果作为下一轮哈希函数计算的输入。这九轮哈希函数共使用了BLAKE、BMW、GROESTL、JH、 KECCAK和SKEIN六种加密算法。

虽然这类串联算法可以很好的增加PoW的安全性,但是因为整个串联过程是一条链环环相扣,只要破解其中一环,那么整个链条就断裂了。

并联哈希算法

所谓并联同样也使用了多种哈希算法,但是与串联不同的是,并联首先将输入数据通过某个哈希算法计算出一个值,然后将该值交给多个哈希算法分别计算出一个值,最后将这些值混淆编排成一个哈希结果。

如Heavycoin(HVC)算法:

  1. 使用HEFTY1哈希算法计算输入数据,得到结果d1;
  2. 将d1作为输入数据交给SHA256、KECCAK512、GROESTL512和BLAKE512分别计算出结果d2、d3、d4和d5;
  3. 提取d2-d5前64位混淆编排后形成一个256位的哈希结果。
相关推荐
武子康11 分钟前
大数据-130 - Flink CEP 详解 - 捕获超时事件提取全解析:从原理到完整实战代码教程 恶意登录案例实现
大数据·后端·flink
摇滚侠16 分钟前
Spring Boot 3零基础教程,WEB 开发 内容协商 接口返回 YAML 格式的数据 笔记35
spring boot·笔记·后端
shepherd11118 分钟前
JDK源码深潜(一):从源码看透DelayQueue实现
java·后端·代码规范
天天摸鱼的java工程师26 分钟前
SpringBoot + OAuth2 + Redis + MongoDB:八年 Java 开发教你做 “安全不泄露、权限不越界” 的 SaaS 多租户平台
java·后端
xyy12328 分钟前
.NET Swagger 配置与拓展指南
后端
ChinaRainbowSea42 分钟前
11. Spring AI + ELT
java·人工智能·后端·spring·ai编程
不会写DN42 分钟前
用户头像文件存储功能是如何实现的?
java·linux·后端·golang·node.js·github
盖世英雄酱581361 小时前
FullGC排查,居然是它!
java·后端
Jagger_1 小时前
SOLID原则中的依赖倒置原则(DIP):构建可维护软件架构的关键
后端
Penge6661 小时前
为什么 Go 中值类型有时无法实现接口?—— 从指针接收器说起
后端