主页 > imtoken官方版 > 区块链 Pow 算法详解 - 傻瓜式程序员
区块链 Pow 算法详解 - 傻瓜式程序员
pow按照自己的理解写,适合程序员理解,简化一些概念
1. 总结算法
首先,我们需要知道什么是摘要算法。 摘要算法一般分为两步。 1. 分割和填充
2.压缩
压缩刚才得到的值。 压缩函数的细节我就不写了。 你需要记住几个概念:
一种。 抽象算法不可逆比特币pow算法,无法获取原文
b. 为了保护原文,摘要算法一般会在原文后面加上一些字符串。 这个过程叫做加盐。
C。 摘要算法具有崩溃的特性,对原文的少量改动都会引起摘要价值的巨大变化
d. 不同的原文产生的抽象值一般是不同的。 不同原文生成相同摘要的概率非常小。 这叫做碰撞
2.生成特殊汇总值
包主
进口 (
“加密/sha256”
“调频”
“字符串”
)
功能主要(){
因为我:= 0; 我 < 100; 我++ {
数据 := "test@example.com"+string(i)
c := getSha256Code(数据)
索引:=字符串。 索引(c,“0”)
如果索引 == 0{
fmt.Println(c,i)
休息;
}
}
}
func getSha256Code(s 字符串) 字符串 {
h := sha256.New()
h.Write([]byte(s))
数据:= h.Sum(无)
十六进制 :=fmt.Sprintf("%x", 数据)
返回十六进制
}
打印值:
069896a4318eca6ef060f14db5b967d5dab38233d6e9ca2a3d8bdaf3a8c88398 28
当 i 为 28 时,生成以 0 开头的摘要。 假设我们指定需要6个从0开始的汇总值比特币pow算法,此时计算机计算需要十分钟。 这个计算时间的长短就是你电脑的计算能力。 强大的计算机会先计算出这个摘要值,POW算法会把这个值作为最新的区块摘要。
3.抽象链
最后一个哈希值+当前区块内容+随机数生成的哈希值就是最新区块的哈希值。 这些哈希值组成的链就是汇总链。 pow的原理大致是这样的