首页
学习
活动
专区
工具
TVP
发布

漫谈比特币与区块链

WEB3.0科普系列之一:《红楼梦》与数据摘要和工作量证明

比特币由中本聪(Satoshi Nakamoto)于2008年10月31日发表论文,2009年1月3日,创世区块诞生。比特币共有大约2100万个单位,最高达到过1.4万亿美元的市值,现在也有3100亿美元(2022年11月)。是什么样的创意在短短的14年内创造了如此巨大的价值,如此高深的论文是否能为普通人所理解?

就象一切得伟大发明一样,大道至简,下面的能打印在一页纸上的白皮书就是比特币的全部:

这篇白皮书都说了些什么?什么是去中心化,什么是分布式账本,矿工如何挖矿?

我们今天来介绍白皮书中最重要的两个概念:数据摘要算法和工作量证明。

1、数据摘要算法

我们知道一篇论文有摘要(Abstract),一篇大部头的书有摘要,其目的是为了让读者快速地了解著作的大体内容,很大程度上能代表、指代整部作品。作品摘要要短小、能概况全貌,区别于其他作品。

数据摘要算法与我们说的作品摘要相类似,又称哈希函数、散列算法,是一种从大的数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小。这样的函数将数据打乱混合,重新创建一个叫做散列值(或哈希值)的指纹。

这个数据摘要算法要具有确定性,就是如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。

数据摘要算法还要具有强混淆性,也就是输入一些数据计算出散列值,然后稍微改变输入值,一个的散列函数会产生一个完全不同的散列值。

现在我们回到《红楼梦》

让我们来找到将《红楼梦》浓缩成32个字的一套方法。满足稳定性和混淆性的要求。稳定性就是任何人用我们的方法都能得到相同的结果。混淆性就是如果原著改一个字,这32个字就会几乎完全不同。

如果你的手边有1982年3月版《红楼梦》上册,我们就可以做这个游戏。我们的哈希函数是从第X页取第Y个字,X取25,5,75,…800; Y取1,你就能得到下面的32个字:

“过面无只 欢庆接唬 说倘说镜 颇得少们 姐袭理宝 着不好出 不他社也 邢而姐石”

这32个字就是整部红楼梦的数据摘要。看看你得到的是不是与我的一样?

区块链中记录了所有的交易,是一个个的账本,就象一本本的书,对每个区块做一个SHA256的计算得到一个256位的摘要值,就象用我们的算法得到《红楼梦》的32个字。

2、工作量证明(Proof-of-Work,PoW)

白皮书中设置了一个奖励机制,让成功将一个新的区块加入到区块链的人(矿工)得到一定量的新的比特币。这是一场竞赛,比得是计算得速度和能力(算力)。由分散在各处的计算机,竞赛谁能最早找出,搭配原本要打包的账本区块的穷举猜测值,谁就等同获得该区块的打包权(记账权)。此猜测值被找出后,与资料、散列值一起打包成块后广播,经多数节点确认与承认,打包者就能获得打包该区块所提供的奖励。

这个计算量有多大?我们可以简单的进行一个类比:

在1分钟内第一个穷举出256位的HASH值的前导零为66位的输入猜测值的第一人可以得到6.25个比特币。

如果用《红楼梦》来打比方,就是每次按特定算法猜测得到一套32个X、Y的值,就是从第X页取第Y个字,会得到不同的32个字。在1分钟之内得到

满纸荒唐言一把辛酸泪XXXXXXXXXXXXXXXXXXXXXX

后面的X可以是任何字,但前面十个一定是

满纸荒唐言一把辛酸泪

于是“满纸荒唐言一把辛酸泪”的矿工会得到奖励。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20221115A06CPN00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券