Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >比特币和区块链(2):比特币中区块链的实现

比特币和区块链(2):比特币中区块链的实现

作者头像
用户1564362
发布于 2018-04-08 03:41:29
发布于 2018-04-08 03:41:29
1.8K0
举报
文章被收录于专栏:飞总聊IT飞总聊IT

0

上一篇我们讨论电子货币的时候提出了由一个寡头负责对所有人的电子货币和交易进行记账,记录到只能增加不可修改的账本里,并且把账本公开给所有的人看的这样一个电子货币模式。

这个模式解决了很多的问题。最主要的是电子货币被复制使用的问题。但是这个模式有两个比较大的问题。第一是这个账本怎么实现。第二是一个寡头是不是靠谱。

今天我们重点来讲账本的实现。这个账本的实现其实就是区块链这个名词的由来。可能对懂的人来说节奏有点慢,但是对不懂的人来说,慢工出细活。这篇的内容依然不是很精彩。但是这些仍然是为了讲清楚后面更精彩的内容所必须的准备工作。

下一篇我们将开始讨论怎么样从一个寡头到民主社会的过程。如何达成一致性,如何防止坏人,以及挖矿到底是什么都会逐渐清楚。这篇文章会用到比较多的计算机相关的术语。而我也只能尽力用通俗易懂的方式给大家解释了。

1

在一个寡头负责记录,所有人都可以查账的系统里。我们第一个需要解决的问题是,大家怎么确定一笔交易确实是由某个人发起的。比如说,张三发起说给李四付了5块钱。大家怎么能够知道这个交易确实是张三发起,而不是王五冒充的。

这个问题在计算机密码学里被叫做数字签名。我们可以设想一下现实世界里的签名有什么样的特点。一般来说,签名是由特定的人签在特定的文件上的。更通俗一点来说。每个签名应该有如下几条要求:

  1. 由特定的人签。
  2. 大家可以辨识。
  3. 签名附属于特定的文件,坏人无法把一份文件的签名挪到另外一份文件上。

在数字签名的世界里,这些特点也同样需要满足。数字签名通常使用非对称加密算法实现。简单来说,有一个公钥一个私钥。前者用于解密后者用于加密。

如果张三想要发起交易付给李四5块钱,张三可以用自己的私钥对这个交易签字,然后发送给寡头。等寡头把交易写进账本以后,吃瓜群众王二麻子等等都可以用张三公开发布的公钥去验证这个交易是不是张三发起的。

2

最早的数字签名算法叫RSA,是以三个发明人的首字母命名的。这三位也同时获得了计算机科学界的最高奖图灵奖。RSA算法主要基于大质数分解问题。这个算法自诞生以来几十年时间里被广泛的检验,简单来说,里面有无数的坑。要实现一个安全可用的RSA,需要很多的技巧。即便如此,它的安全性还是受到各方面的质疑。

而比特币使用的数字签名算法是椭圆曲线算法,而不是目前常用的RSA。这个算法目前为止还没有好的破解方式,哪怕是针对特定情况的。这是非常安全的一个数字签名算法。

在数字签名的使用上,我们还有一个问题没有解决。这些数字签名的公钥是怎么样发布出去的。比特币采用了一个非常聪明的机制。这个机制也同样适用于我们这个一个寡头负责记录所有交易的简化版的系统。简单一点来说,比特币系统认为,一对私钥和公钥代表了一个人。

尽管我们知道在背后无法杜绝一个人使用多对私钥和公钥,而一对私钥和公钥也可能被多个人使用。但是在比特币系统里,每个独立的个体是以不同的私钥和公钥对来区分的。私钥自己藏着不可见,而公钥就成了这个人的身份证号码和地址。所以,如果各位有玩过各种加密货币,钱包的地址是一串杂乱无章的字符串,这个其实就是椭圆曲线算法产生的公钥。总结一下,比特币系统里,每个参与的客户端把自己的公钥作为地址,参与系统交易。其他人要验证一条消息是否是这个人发送的,只需要拿其地址作为公钥去验证即可。

3

下面我们讨论账本的不可篡改问题的实现。我们把这个问题的定义改一下。换个说法就是这个账本如果出现了任何的篡改,任意一个查账的吃瓜群众都可以独立的发现这个账本已经被篡改了。所以账本不可被篡改,在区块链里,实际上是一种保障账本一旦被篡改,大家都可以迅速发现的机制。而不是说账本写进去之后就无法被改变了。

这里需要用到计算机领域的另外一项技术:哈希(Hashing)。用通俗一点的话来说,哈希使用一个哈希函数,对一段输入的东西生成一个输出的东西。这里我们需要用一下中学数学的一些知识。

如果y=f(x)是一个函数的话,x的取值范围是定义域,y的取值范围是值域。对于任意一个在定义域里面的x,值域范围内有且仅有一个y对应。但是,对于不同的x,可能会对应到相同的y。这种现象在哈希里面叫做冲突(conflict)。

密码学上的哈希有一些要求。这里我们还是以比特币使用的哈希函数SHA256为例来说明这些要求。SHA256通过一系列复杂的数学变化,对输入的任意长度的文本,生成256比特大小的输出。

这个函数有很多的特殊性,我们先来看第一点:冲突必然存在。因为值域是256比特固定大小的输出,而输入是任意长度的。所以值域其实是定义域的真子集。定义域的大小比值域要大。根据鸽洞原理,10只鸽子,9个鸽洞,必然存在一个鸽洞里面至少有两支鸽子。如果值域是定义域的真子集,冲突必然存在。

4

但是所有密码学上的哈希函数,包括SHA256满足如下几个特点。这几个特点构成了区块链技术检测篡改的核心。

第一点,给定x算出y不是一件特别困难的事情。对于SHA256来说,如果我们给定输入,得到256比特的输出,是一件计算上相对很廉价的,只要文本不是太夸张,1秒以内肯定大部分计算机应该能算出来。

第二点,仅仅给定y,找到能够生成y的x候选者,是一件计算上几乎不可能的事情。考虑一下函数y=x+1,对于这种函数来说,每个y算出可能的X候选者是很容易的。SHA256不同,如果仅仅知道y要推算出可能的x,只能靠近似穷举的办法。也许运气不好几百年也不一定能找到一个合适的x。

第三点,对于相邻的x,产生的y的距离是很随机的在y的值域里的。这句话通俗一点讲,也就是说我们无法通过对有限对x和y值的研究去推测出一个新的x可能会产生出什么样的y来。

这几个特点结合起来,我们就有了这样的一个现实的应用。我们可以公布系统使用的哈希函数的细节。然后把y值也公布出去。这样每次不管是谁想要检验是不是某个输入产生了这个对应的y值,只需要把这段输入x用这个函数跑一下,结果出来如果是y,那么大概率就是对的,如果不是y那么大概率就是不对的。用人话翻译一下,就是说真的遇到了另外一个x居然也能产生同样y的概率很低,遇到了只能自己认倒霉了。

所以,如果我们记住了x的哈希值y,又知道哈希函数是什么,当x被篡改之后,只要哈希值y无法被同时篡改,我们就可以很迅速的知道,x是被篡改的。这是区块链防止篡改的基础。

5

现在,我们可以给大家介绍区块链是什么了。区块链是一个单项链表。它由若干个连接的区块构成。每个区块包含了若干条交易记录,还有一个表头。表头里面存了很多东西,但是对于我们理解来说,最重要的是两个:1前一个区块的地址,2前一个区块的哈希值。这个区块链就是这个不可篡改的账本了。而区块链的第一个区块的地址和哈希则被发送给系统里面 每一个成员。

系统刚开始的时候只有一个区块:如下面所示区块A

A

A里面包含了若干交易记录。这些交易记录都被数字签名了。而A的地址和哈希值则广播给了整个系统里面的所有吃瓜群众。

这种情况下,A如果被篡改,每个吃瓜群众去查账的时候,只要跑一下SHA256就会发现极大概率的情况下,哈希对不上了。所以这个账本被篡改了。吃瓜群众可以拒绝相信这个账本。

那么随着时间的运行,这个系统里一个区块存不下去了,现在我们有了两个区块A和B

A<---B

这个时候,B的表头记录了A的哈希和地址。而B的地址和哈希被广播给了所有的吃瓜群众。我们知道如果B被篡改了,那么B的哈希值和吃瓜群众手里的哈希值就无法对应了。假设B没有被篡改,那么A被篡改了会怎么样呢?

B里面存了A的哈希值,所以吃瓜群众也可以顺着链条发现A被篡改。那么我们是不是可以同时篡改A和B表头的A对应的哈希值呢?答案当然是不可以。因为篡改了B表头的哈希值,等同于篡改了B。这个被篡改以后的区块算出来的哈希值,和吃瓜群众手里拿着的哈希值是不一样的。

如果系统继续扩张,有了A, B, C呢?

A<---B<---C

道理是一样的,只要吃瓜群众手里拿着原始的C的哈希值,那么寡头的任何篡改都是没有希望不被发现的。当然如果哪天计算机科学发展到了一定程度,或者数学上证明了SHA256不安全,寡头可以伪造出另外一个区块,使得它的哈希值和吃瓜群众手里拿着的原始的C的哈希值是一样的,那么整个系统就再也不安全了。

6

下面这段内容,如果没有计算机背景可以略过。

在比特币的区块链系统里。每个区块的交易记录是存成为一颗二叉树。二叉树的叶子节点是每条交易记录,上面的每个父节点的左右指针分别指向左右子树。但是这个二叉树和我们平时常用的二叉树有一点不同,它不但保存左右子树的地址,同时也保存左右子树的哈希值。这种树叫做Merkle Tree。

Merkle Tree的一个重要特点是可以在O(Log n)的时间复杂度里检验一笔具体的交易是否被篡改。O(Log n)的复杂度什么意思呢?简单来说,如果一个区块里面存了2的100次方交易,那么计算机系统大致上只需要做100次的哈希比较,就可以确定一笔具体的交易是否被篡改。这是非常高效的算法。

但是Merkle Tree只是交易记录在区块内的一种存储形式。它是密码学上常用的一个数据结构。也是比特币的发明者中本聪选取的。这并不代表着我们必须,只能用这种结构去存储区块里面的交易。

7

我们来总结一下今天的内容。今天主要讲区块链这个不可篡改的账本是什么。

我们首先讲了数字签名技术。数字签名由私钥和公钥对组成,使用者用私钥签名,公钥在比特币系统里面是每个参与者的身份号码和地址。任意的人可以通过公钥去确认一笔交易确实由某个特定的人发起。比特币使用椭圆曲线数字签名算法。

我们接下来讲了密码学上的哈希。密码学上的哈希的特点是从输入x算出输出y很容易,从输出y找到可能的输入x很难,哈希函数对相邻的x的值域y很散,通过已知的若干对x和y的关系,在给定新的y的情况下,去寻找新的x也是没有任何帮助的。穷举法几乎是唯一的寻找特定的y对应的输入x的办法。而以今天的计算机能力,穷举法需要漫长的时间。所以,y可以作为验证x是否被篡改的标记。比特币使用SHA256哈希算法。

我们接下来讲了区块链的结构。每个区块存了若干交易记录。区块们从老到新链接起来,后一个区块记住前一个区块的地址和哈希值,而表头最新的区块的地址和哈希值则广播给所有在网络里的人。我们证明了,因为在网络里的人手头的哈希值无法被篡改,所以任何针对整个区块链的篡改都会被吃瓜群众发现。

最后我们讲了区块链内交易记录的存储。在比特币的区块链里,用的是改良的二叉树Merkle Tree。它提供了O(Log n)的时间复杂度去检验一条具体的交易是否被篡改。

顺便提一下,山寨币和比特币的不同,其中一部分就体现在区块的大小,哈希函数的选择等等。但是这篇文章主要讲述比特币的技术实现,我们就不再比较其他的了。

下面我会开始讲分布式一致性的问题,也就是比特币如何去除这个寡头的问题。

有读者问本人对数字货币的态度到底是什么。简单一点说,我拿身价5%的钱投资数字货币。投资组合里以大币为主,小币则按照我自己对区块链技术的理解选择。理解体现在小币使用的区块链技术的各个方面是否靠谱。本公众号的任何文章都只代表个人观点,不构成投资建议。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 飞总聊IT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
比特币和区块链(3):比特币的共识机制
0 上一篇我们详细介绍了不可篡改的账本区块链的数据结构的实现。其核心技术第一是数字签名,比特币采用的是椭圆曲线数字签名算法。第二是加密级别的哈希,比特币采用的是SHA256。 然而在我们的系统里,依然只有一个寡头负责记账。我们固然不用担心交易记录被伪造,因为有数字签名。我们也不用担心区块被篡改,因为可以通过哈希值校验。但是我们无法防止这个寡头故意不记账或者故意丢区块。所以这个系统是一个人人可以查账,但是大家却必须相信寡头不作恶的系统。 比特币系统显然不会停留在这个设计上。所以寡头需要被取代掉。比特币的做
用户1564362
2018/04/08
1.4K0
比特币和区块链(3):比特币的共识机制
比特币与区块链技术详解
最近比特币的价格大幅降低,区块链的热度同时在不断的增加。因此现在应该是聊聊这两个“奇怪生物”背后技术的好时机了。 我们先看看比特币的价格变化图: 图1. 从2017.11.27 到2017.12.25比特币的价格走势图 大家可能都知道比特币是一种虚拟货币,可以在互联网上被当做货币一样进行价值交换。如果深入了解一些的人也许会知道比特币是一种“去中心化”的货币,它的发行没有国家信用做背书,也没有中央银行作为货币发行机构。那么,我们为什么要有比特币?它又为什么收到了那么多人的期待?这些原因都可以在比特币的底层
企鹅号小编
2018/01/26
1.7K0
区块链是什么(上)超通俗的区块链入门干货
区块链是比特币的底层技术,不等同于比特币。有人说比特币就是一场泡沫,甚至放话“比特币是传销”。区块链作为继互联网后的新一波技术浪潮,本身无罪,况且炒币只是区块链里最初级的玩法。读完这篇文章,我们就能弄懂大部分区块链基础知识,从而离保守和狭隘远一点。
互链脉搏
2018/05/18
2.7K0
区块链是什么(上)超通俗的区块链入门干货
区块链的核心技术
区块链的技术基石主要有: SHA256 Hash 公钥加密技术 工作量证明机制 (1)SHA256 Hash 区块链使用的核心哈希算法是 SHA256,计算后的值不能被解密回原始内容,它是单向的,
dys
2018/06/04
1.3K0
区块链技术原理
随着互联网技术的不断发展和应用,数据的数量和价值也在不断增长,然而如何保护数据的安全和隐私,如何有效地管理和交换数据成为了一个日益重要的问题,区块链技术作为一种新兴的分布式数据库技术具有去中心化、安全和透明等特点,在数据管理和交易方面具有广泛的应用前景。本文将从区块链技术的基本概念、工作原理等方面进行介绍和概述,通过对区块链技术的深入了解,读者可以掌握其基本原理和应用方法为未来的区块链技术应用和创新提供帮助和指导
Al1ex
2023/08/10
7490
区块链技术原理
区块链分享
区块链为什么会有如此魅力,让全社会都在关注它?区块链技术是本质是不可篡改的、去中心化的公开账本,是记账方式的进步。记账是社会生产生活的基石,记账方式的进步,能推动社会进步。
一个淡定的打工菜鸟
2018/12/27
1.6K6
《区块链:定义未来金融与经济新格局》摘抄笔记第0章 必然的出现第1章 区块链是什么第2章 区块链带来的新机遇第3章 区块链的应用场景第4章 区块链技术原理
前三章是关于区块链的科普文章。最后一章专门涉及技术,最后一章感觉抄了《精通比特币》一书不少内容。 第0章 必然的出现 世界上最早的货币 —— 已知的最早货币:大麦货币。苏美尔人将定量的大麦作为通用单
SeanCheney
2018/04/24
8170
《区块链:定义未来金融与经济新格局》摘抄笔记第0章 必然的出现第1章 区块链是什么第2章 区块链带来的新机遇第3章 区块链的应用场景第4章 区块链技术原理
区块链学习笔记 | 比特币中用到的密码学原理
区块链这个名词,大家都不陌生,那么区块链的本质究竟是什么?有人说区块链是下一代的价值互联网;也有人说它是世界上最慢的数据库。的确,如果把它当数据库用的话是非常的慢,而且仅仅只能实现数据库中的一小部分功能。
Python进击者
2019/08/12
1.6K2
区块链 - 区块链基础知识入门
早在 1999 年,文件共享网络 Napster 就出现了,可方便用户在混合对等网络(之所以使用“混合”一词是因为它使用了中央目录服务器)上轻松共享音频文件(通常包含音乐)。文件共享网络不仅仅可用于共享音乐文件,还允许所有用户保留这些共享文件的副本。这样一来,单个数字资产就会跨全球网络生成无限个合理副本。这项技术简单易用,只要有计算机,任何人都可以利用它。这让备受尊崇的淘儿唱片业绩意外下滑。到 2006 年,淘儿唱片被迫关闭了它在美国国内的所有 89 家门店。 2008 年,次贷危机爆发。在此期间,成立已久
程序你好
2018/07/20
13.9K0
谈谈我对区块链的理解
通过之前研究的十大前景行业(带来高收入的 10 大开源技术,可以涨工资了!)提到人工智能,区块链,大数据都是今年以及2018年的技术热门趋势,本文专门介绍下什么是区块链? 1、区块链的诞生 互联网上的贸易,几乎都需要借助可资信赖的第三方信用机构来处理电子支付信息。这类系统仍然内生性地受制于“基于信用的模式”。区块链技术是构建比特币区块链网络与交易信息加密传输的基础技术。它基于密码学原理而不基于信用,使得任何达成一致的双方直接支付,从而不需要第三方中介的参与。 定义: 区块链是一个分布式账本,一种通过去中
企鹅号小编
2018/01/26
2.9K0
区块链数据结构
区块链是近年来备受关注的技术,它的出现为数字货币、智能合约等领域带来了革命性的变革,然而区块链的实现并不简单,其中的数据结构是至关重要的一部分。本文将介绍区块链的数据结构,帮助读者更好地理解区块链的运作原理,通过本文的学习,读者将能够更好地理解区块链的本质并为后续的区块链开发及应用打下坚实的基础
Al1ex
2023/08/10
7890
区块链数据结构
深度丨解读比特币背后的奥秘丨附中字视频
翻译/校对: Mika 本文为 CDA 数据分析师原创作品,转载需授权 "拥有"一枚比特币意味着什么很多人都听说过比特币。这是一种数字货币,不需要特定政府发行,也不依赖银行管理账户和验证交易。而且没有人真正知道其发明者。 我们会从一步步说明,你将如何创建自己的比特币。首先,从你与朋友记录付款的公共账本开始。随着你对朋友和周围的信任开始逐渐降低,如果你聪明地引入密码学的一些概念用来解决信任危机,最终你将得到"加密货币”。 附有中文字幕的视频如下: 视频内容 针对不方便打开视频的小伙伴,CDA字幕组也
CDA数据分析师
2018/02/23
6830
深度丨解读比特币背后的奥秘丨附中字视频
区块链技术与应用01 北大肖臻
记录一下课程吧。。还是记录以下要好,否则看完了和没看似的。。。。尴尬。。。。。。Fighting!!!!!!
Daffy
2020/11/10
1.1K0
比特币和区块链的技术原理概述
•中本聪创世白皮书:"Bitcoin: A peer-to-peer electronic cash system,”(2008).【1】
Radar3
2020/06/19
1.4K0
学习笔记 | 什么是比特币?
1.比特币是一种电子货币,数字货币 2.其来自于中本聪《白皮书》 3.去中心化的电子记账系统,每个人的账本都是公开的 4.每个人的消费账本都会广播给其他所有人(billboard),将账单打包成一个块,就是区块,一块大小大约1M,可以存储4000多条记录,区块连接在一起形成区块链 5.以谁为准?
Justlovesmile
2021/12/13
5870
比特币和区块链(3):比特币的密码学知识之密码学哈希
其中主要原因是密码学知识在比特币的体系架构里扮演了非常重要的角色。接下来我们一起来了解下:密码学哈希
用户1564362
2018/08/17
6280
比特币和区块链(3):比特币的密码学知识之密码学哈希
比特币和区块链是什么?看完这篇文章不再懵
实际上全球各种虚拟货币已经超过了1300种,其中市值排名前几名的除了比特币还有下面的这几种虚拟货币。
進无尽
2018/09/12
1.3K0
比特币和区块链是什么?看完这篇文章不再懵
区块链原理说明及其应用场景
区块链技术难点:TPS、延迟时间、容量和带宽、安全等方面。 区块链技术的集成应用在新技术革新和产业变革中起到的重要作用,广泛用于加密货币,食品链安全,知识产权,资产管理等领域,加快推动区块链技术和产业创新发展;
全栈工程师修炼指南
2022/09/28
8040
区块链的加密技术
数字加密技能是区块链技能使用和开展的关键。一旦加密办法被破解,区块链的数据安全性将受到挑战,区块链的可篡改性将不复存在。加密算法分为对称加密算法和非对称加密算法。区块链首要使用非对称加密算法。非对称加密算法中的公钥暗码体制依据其所依据的问题一般分为三类:大整数分化问题、离散对数问题和椭圆曲线问题。
v-longbatuiguang2
2022/05/06
2K0
区块链的加密技术
区块链关键技术
区块链本身只是一种数据的记录格式, 与传统的记录格式不同的是, 区块链是将产生的数据按照一定的时间间隔, 分成一个个的数据块记录, 然后再根据数据块的先后关系串联起来, 也就是所谓的区块链了.
BLUSE
2022/11/14
1.2K0
推荐阅读
相关推荐
比特币和区块链(3):比特币的共识机制
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档