深度丨解读比特币背后的奥秘丨附中字视频
"拥有"一枚比特币意味着什么?
很多人都听说过比特币。这是一种数字货币,不需要特定政府发行,也不依赖银行管理账户和验证交易。而且没有人真正知道其发明者。
我们会从一步步说明,你将如何创建自己的比特币。首先,从你与朋友记录付款的公共账本开始。随着你对朋友和周围的信任开始逐渐降低,如果你聪明地引入密码学的一些概念用来解决信任危机,最终你将得到"加密货币”。
附有中文字幕的视频如下:
针对不方便打开视频的小伙伴,CDA字幕组也贴心的整理了文字版本,如下:
加密货币
比特币只是第一个加密货币的实例,而如今有数以千计的加密货币与传统货币进行交易。理清你自己发明加密货币的过程,能为我们理解当下几大主流加密货币打下基础,认清何时以及为何存在不同选择的余地。
与任何电子支付一样,存在很多方便易用的应用用于发送和接受货币,而不需要知道是怎么实现的。区别在于其背后并不是某家银行来验证交易,而是基于密码学中某些数学方法的分散式的信任列表验证体系。
账本和电子签名
首先,我希望你暂时不管加密货币。先从更基本的概念入手:账本和电子签名。
如果你和朋友们有很频繁的金钱来往,比如AA支付饭钱等。总是用现金很不方便,所以可能会用到公共账本,记录了之后将会发生的交易信息。比如Alice支付Bob 20美元,Bob支付Charlie 40美元等。
这个账本将是公开的,每个人都能查阅。就像网站一样,每个人都能访问并添加新的记录。到了每个月底,大家一起看到交易记录、进行结算。如果你支出大于收入,就付钱;如果收入大于支出,就拿出多余的钱。
因此这个简单体系的协议如下,每个人都能向账本添加交易信息,到月底大家一起结算。
但公共账本存在一个问题,即每个人都能添加记录。应该怎样避免Bob未经Alice同意下记录,Alice支付Bob 100美元。我们凭什么相信账本中的记录都准确无误呢?
这里就需要用到密码学中的技术:电子签名。
目的是就像手写签名一样,Alice能够在交易信息旁留下记录,证明她了解并且同意这笔交易,而且这个签名不能被他人伪造。乍一想,电子签名似乎不太可能实现。
无论电子签名是如何产生的都会被计算机读取和复制,那究竟该如何防止伪造呢?
公共密钥和私人密钥
方法是每个人都需要生成一对公共密钥和私人密钥。每一个密钥都是一串比特。私人密钥有时也被称为秘密密钥,以便缩写为SK;公共密钥则缩写为PK。
正如其名,私人密钥是由你自己保存的。现实生活中,你签署的所有文件中的签名都是一致的。电子签名则更进一步,它会随着签署的内容变化。看上去是一串1和0代码,通常长度为256位。内容的轻微改变都会让签名看上去完全不同。
讲得更正式一点,产生这样的签名需要一个函数。取决于信息的本身和你的私人密钥。私人密钥确保只有你本人能产生该电子签名,这个签名还取决于签署的信息,意味着其他人不能简单地复制这个签名并伪造在其他信息上。
同时还有一个函数用于验证签名是否有效,这里就要用到公共密钥,作用是得出是或否(T/F),指出这个签名是否由公钥对应的私钥产生。这里不会探讨这些函数具体是如何实现的。
但保证了如果不知道私钥,你将无法得出有效的签名。具体来说,并没有比穷举和验证更好的办法。可以用大家都知道的公钥进行验证。
现在想想256位比特到底有多少可能的签名?总共有2的256次方个可能的签名。这是一个天文数字。假设你验证了对应某个信息一个签名是有效的,你可以相当有把握地认为这个签名只能由私钥产生,且该私钥对应用于验证的公钥。现在确保每个人在交易后签名,这很棒。
但还存在一个漏洞。
比如Alice签署了一条Alice支付Bob 100美元的交易记录,尽管Bob不能在新交易上伪造Alice的签名,但他可以把这条记录随意进行多次复制。记录的对应签名依然是有效的。
要解决这个问题,当签订新的交易信息时,交易信息还必包含一个唯一的编号与之对应。
那样如果Alice多次支付Bob 100美元,账本上的每条记录都会需要一个新的签名。太好了,电子签名大大减少了初始协议中的信任危机。
但要真正实现,仍然需要依赖类似的诚信制度。也就是说,你相信到了月底每个人都会遵循协议并用现金结算。万一Charlie欠了很多钱,但拒绝出来还钱该怎么办?
使用现金结算的唯一原因是其中有人欠了钱。有个聪明的办法不需要再用现金结算,只要能够避免有些人的支出超过所得。开始可以让所有人在账上支付100美元,账本上最先记录几条:Alice获得100美元 Bob获得100美元;Charlie获得100美元等等。
现在只需拒绝账本上入不敷出的人的交易。举个例子,如果前两条交易记录为:Charlie支付Alice 50美元,Charlie支付Bob 50美元。如果他想记录Charlie支付你20美元,那将是无效的,和他没有签名一样无效。
注意,这就意味着验证一条交易需要了解到目前为止所有的历史交易信息,在加密货币中同样如此,但仍有待优化。
有趣的是,这个过程去掉了账本和真实货币的联系。理论上,如果世界上所有人都是用这个账本,你整个一生都可以在这个账本上支付并获得金钱中度过,根本不需要转化为真实的货币。
Ledger Dollars
为了强调这一点,我们把账本上的货币单位称为Ledger Dollars,简称为LD。
你也可以将LD自由地兑换成真的货币,举个例子,Alice在现实中给了Bob 10美元,作为交换 Bob在公共账本上记录:Bob支付Alice 10美元。但这样的兑换不会被协议所保证。这更类似在市场上,你将美元兑换为欧元或其他货币。
这是理解比特币和其他加密货币时第一重要的内容。这实际上就是一个账本,历史交易总和就是当下的货币(currency)。
当然就比特币而言,比特币并不会因为人们用现金购买就进入到账本上,之后我会细说新的资金如今进入账本。但此之前,我们目前的LD体系和加密货币的原理还存在很大的区别。
我提过,这个公共账本存在于公共地点,比如网站,所有人都能添加记录。但那样就需要信任这一中心机构,即谁来管理这个网站? 谁来控制添加记录的协议?
为了解决这个问题,可以让所有人都获取该账本的副本。当你想进行交易时,如Alice支付Bob 100美元。你需要将这个信息传播给网络中所有人,并且记录到他们的那份账本上。除非进一步做些什么,否则这样的体系会很糟糕。
如何让所有人确保账本正确呢?
当Bob收到了类似Alice支付Bob 10LD的交易,他如何确保每个人都收到并相信这一交易呢? 并且能让他之后用这10LD支付给Charlie做交易。
试着想想你自己收听到传播的交易信息,如何确保其他人也接受相同的交易信息并按照相同的顺序。这是关键所在,也是有趣的难题。
你能否得出一个协议,决定接受或拒绝交易信息,从而确信遵循该协议的其他人,并且按哪种顺序他们的账本与你的完全一致。
这是在比特币原始论文中提出的问题。简单地讲,比特币的解决办法是,选择信任消耗最多计算资源的那份账本。
这涉及到"加密哈希函数”。基本的思路如下:如果将计算资源的消耗作为信任的基础,那么伪造的交易记录和不一致的账本,则需要不可能达到的计算能力。
提醒大家一下,这里涉及的内容是一般比特币的用户并不需要了解的。但这个想法实在是太酷了!如果你掌握了,那你就理解了比特币和其他加密货币的核心。
哈希函数
首先,什么是哈希函数?
这些函数的输入可以是任何信息或文件,输出为固定长度的比特字符串,如256位。输出值成为这个信息的哈希值或摘要,目的是看似为随机的,但并不是随机的,对应信息总是输出相同内容。但如果你稍微修改输入,也许只是修改了其中一个字母最终的哈希值将面目全非。这里演示的哈希函数"SHA256”。
当输入稍作修改,得出的输出毫无规律可言,这不是普通的哈希函数,这是加密哈希函数。这就意味着逆向计算是不可能的。
如果给出一串1和0的字符串,然后让你找出SHA256函数中哪个输入会得出这串字符。那么你只能通过猜测和检验的方法。进行2的256次方个尝试显然是不现实的。你可能会想,如果你深入这个函数的原理,那么你就可以对输入进行反向推断,而不是通过瞎猜,但目前没有人可以做到。
有趣的是,目前还没有严格的证明逆向计算是困难的。目前大量的安全零度都依赖加密哈希函数,以及它的这个性质。如果看到浏览器和视频网站建立的加密连接背后的算法,或者浏览器连接银行网站时的算法,你很可能会看到SHA256算法的名称。
但现在我们的关注点是,这样的函数如何证明一系列的交易信息所需要的计算力。想想,有人给你一份交易记录并说,”嘿!我发现了一个特殊的数字,你把这个数字放在这份交易记录后面,对整个内容采用SHA256函数,输出的前面30个数字都为0!"
找到这样的一个数字有多难?对于一个随机的信息,其哈希值前30位都是0的概率是2的30次方分之一,差不多是十亿分之一。而且因为SHA256是一个加密哈希函数,找到这个特殊数字的唯一方法只能是穷举验证。
所以刚才那个人基本上尝试了十亿次,才找到了这个特别数字。一旦你知道这个数字 验证起来很快,计算一下哈希值,发现开头是30个0。
工作量证明
换而言之,你能很快地验证这确实经过了大量计算,但不需亲自付出这么多重复劳动。这称为"工作量证明”。
重要的是,这与交易记录紧密相关,如果你更改了其中一条交易信息,即便是轻微的改动,也会完全改变的哈希值。那么又需要经过十亿次尝试,才能找到新的工作量证明。即找到那个特别数字,对应的哈希值会以30个0开头。
现在回到我们的分布式账本的情景。每个人都在传播交易信息,我们想找到一个方法让所有人都确认何为正确的账单。正如我所说,比特币原始论文的核心是:让每个人都信任需要最多计算的那份账单。
为了实现,首先要将账单整理成区块。每个区块包含了一系列交易信息以及其工作量证明,即有一个特别数字,其哈希值以一系列0开头,暂定已60个0开头。
同样交易信息经过发送方签名才被有效,区块只有含有工作量证明时才有效。而且为了确保区块有一定顺序,我们规定区块在头部信息中必须附有前一区块的哈希值。如果你想改变其中某个区块的内容,或者交换两个区块的顺序,这会改变后面区块的内容。从而改变那个区块的哈希值。然后又影响下一个区块,诸如此类。
这需要全部重新计算,重新寻找每个特别数字,使得区块的哈希值以60个0开头。因为区块这样相互链接,与其称为账本,不如称为"区块链”。
在这个新的体系之下,如今允许世界上的每个人成为区块的建立者,意思是说他们都将收听网络中的交易信息,整理这些信息生成区块,然后进行大量计算,寻找特别数字使得区块的哈希值以60个0开头。一旦找到了这个数字,他们就将该区块传播出去。
为了奖励该区块建立者的付出,当他建立了一个区块,我们允许他在开头获得一笔特别的交易信息,即他获得10 LD 这称为"区块奖励”。
这不同于我们一般接受或拒绝交易的规则,它并不来自于其他人,所以不需要签名。也意味着整个网络中的LD,会随着新区块的产生而增加。建立区块通常叫做"挖矿”,因为需要大量的计算力,也会为整个经济中引入新的货币量。
矿工所做的其实就是,收听交易信息、建立区块、传播区块。在矿工眼中 每个区块就像是小型的彩票,每个人都想尽快猜到数字,直到其中的一个幸运儿找到了那个特别数字,能让区块的哈希值以很多0开头。
如果收到了两份完全不同的区块链,我们倾向于选择最长的那份,即需要最多的工作量的那份。如果暂时难分上下,等待下一个区块,总有一个会形成更长的区块链。
因此即便没有中心机构,每个人也在维护自己的那份区块链。但如果每个人都信任最多工作量的区块链,我们就达到分散化的共识。
为什么这样能够建立一个可信的系统? 什么时候应该相信这个系统里的交易很可信?
也许Alice想要用伪造的区块欺骗Bob,即她给Bob一个区块里包含里她支付Bob 100 LD的信息。但她没有把这个传播给其他人,因此其他人还认为她仍持有那100 LD。为此她要比其他所有矿工先找到工作量证明,他们都在独立计算区块。这确实是可能发生的!
可能Alice比其他人都先找到这个证明,但Bob还会收到来自其他矿工的区块传播。所以为了让他相信伪造的区块,Alice需要全部独立计算,继续添加新的区块。这与来自其他矿工的区块都不同。
但系统规定,Bob总是信任他收到的最长的那个区块链。Alice在前几个区块还可能保持领先,刚好碰巧她比其他所有矿工都先找到那个区块。但除非她拥有所有矿工计算资源的50%,所以更可能发生的是,其他矿工计算的区块会比Alice伪造给Bob的区块发展的更快。所以经过足够长的时间,Bob会拒绝收到的来自Alice的区块链,而选择其他所有人计算的那份更长的区块链。
注意,因此你不应该立即信任收到的新区块。而要等到后面有几个新的区块添加。如果还没收到更长的区块链,你就能信任这个区块和其他人的区块链是一致的。
到此,我们讲解了所有的主要内容。我希望这个视频能够让大家,在今后遇到新概念时有理性的思考。目前有大量的资金涌入加密货币中,我并不打算评价这是好还是坏。但我认为对于想要进入该领域的人群,了解些基础知识是很有用的。
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
“最近复购率一直在下降,我们的营销力度不小啊,为什么用户还是走了?” “是不是广告投放的用户质量不高?还是我们的产品问题 ...
2025-02-21以下文章来源于数有道 ,作者数据星爷 SQL查询是数据分析工作的基础,也是CDA数据分析师一级的核心考点,人工智能时代,AI能为 ...
2025-02-19在当今这个数据驱动的时代,几乎每一个业务决策都离不开对数据的深入分析。而其中,指标波动归因分析更是至关重要的一环。无论是 ...
2025-02-18当数据开始说谎:那些年我们交过的学费 你有没有经历过这样的场景?熬了三个通宵做的数据分析报告,在会议上被老板一句"这数据靠 ...
2025-02-17数据分析作为一门跨学科领域,融合了统计学、编程、业务理解和可视化技术。无论是初学者还是有一定经验的从业者,系统化的学习路 ...
2025-02-17挖掘用户价值本质是让企业从‘赚今天的钱’升级为‘赚未来的钱’,同时让用户从‘被推销’变为‘被满足’。询问deepseek关于挖 ...
2025-02-17近来deepseek爆火,看看deepseek能否帮我们快速实现数据看板实时更新。 可以看出这对不知道怎么动手的小白来说是相当友好的, ...
2025-02-14一秒精通 Deepseek,不用找教程,不用买资料,更不用报一堆垃圾课程,所有这么去做的,都是舍近求远,因为你忽略了 deepseek 的 ...
2025-02-12自学 Python 的关键在于高效规划 + 实践驱动。以下是一份适合零基础快速入门的自学路径,结合资源推荐和实用技巧: 一、快速入 ...
2025-02-12“我们的利润率上升了,但销售额却没变,这是为什么?” “某个业务的市场份额在下滑,到底是什么原因?” “公司整体业绩 ...
2025-02-08活动介绍 为了助力大家在数据分析领域不断精进技能,我们特别举办本期打卡活动。在这里,你可以充分利用碎片化时间在线学习,让 ...
2025-02-071、闺女,醒醒,媒人把相亲的带来了。 我。。。。。。。 2、前年春节相亲相了40个, 去年春节相亲50个, 祖宗,今年你想相多少个 ...
2025-02-06在数据科学的广阔领域中,统计分析与数据挖掘占据了重要位置。尽管它们常常被视为有关联的领域,但两者在理论基础、目标、方法及 ...
2025-02-05在数据分析的世界里,“对比”是一种简单且有效的方法。这就像两个女孩子穿同一款式的衣服,效果不一样。 很多人都听过“货比三 ...
2025-02-05当我们只有非常少量的已标记数据,同时有大量未标记数据点时,可以使用半监督学习算法来处理。在sklearn中,基于图算法的半监督 ...
2025-02-05考虑一种棘手的情况:训练数据中大部分样本没有标签。此时,我们可以考虑使用半监督学习方法来处理。半监督学习能够利用这些额 ...
2025-02-04一、数学函数 1、取整 =INT(数字) 2、求余数 =MOD(除数,被除数) 3、四舍五入 =ROUND(数字,保留小数位数) 4、取绝对值 =AB ...
2025-02-03作者:CDA持证人 余治国 一般各平台出薪资报告,都会哀嚎遍野。举个例子,去年某招聘平台发布《中国女性职场现状调查报告》, ...
2025-02-02真正的数据分析大神是什么样的呢?有人认为他们能轻松驾驭各种分析工具,能够从海量数据中找到潜在关联,或者一眼识别报告中的数 ...
2025-02-01现今社会,“转行”似乎成无数职场人无法回避的话题。但行业就像座围城:外行人看光鲜,内行人看心酸。数据分析这个行业,近几年 ...
2025-01-31