主页 > 苹果下载imtoken教程 > 长文解惑:区块链与比特币

长文解惑:区块链与比特币

苹果下载imtoken教程 2023-02-06 07:45:36

本文原载于《独库1802》,限于篇幅有所删减

区块链成为近两年最火的网络词汇,但估计大多数人只是熟悉,并没有真正了解。

区块链出现最多的词是比特币,显然,它们之间一定有某种密切的关系。

本文是对比特币和区块链知识的深入介绍。 我尝试按照“自上而下,逐层提炼”的原则,像剥洋葱一样,一层一层地剥比特币和区块链的知识。 深入下去,让读者每剥开一层就得到一次完整的知识收获。

分散的

区块链和比特币之间的关系_比特币等于区块链吗_比特币交易链区块拥堵

区块链本来是一种基于互联网的信息编码、传输、加密、解密、验证技术,但在我看来,现在已经上升为一个“去中心化”的概念,本质上是一种概念创新。 比特币是这一思想的具体应用。

例如,区块链相当于电子商务。 你想想二十年前有多少人理解电子商务是什么,本质上是一个概念,但是这个概念必须要依靠一定的技术手段才能实现。 比特币相当于淘宝,是电子商务的具体应用。

因此,我们要想了解什么是区块链,首先要了解什么是去中心化。 让我举两个例子来帮助你理解:

第一个例子是从 Internet 下载电影。 最早的时候,我们都是到一些知名的电影下载网站下载电影。 这些网站会将电影文件存储在一个或一组服务器上,每个人都访问这个(组)服务器来下载电影。 这称为集中化。

在这个游戏规则中,电影网站的服务器是中心,所有下载电影的人都只是中心抽出的一根线。 在中心化游戏中,玩家的地位是不平等的,网站所有者占据绝对强势地位。 他要你下载就下载,他要给你限速就限速。

后来出现了一种去中心化的下载方式,就是BitTorrent下载,也叫P2P(peer to peer)下载。 现在说到P2P,一般指的是那种个人借贷网站,但最初的概念是从BT下载的。 P2P是人对人,点对点。 BT下载的原理和电影网站完全不同。 电影在某个服务器上是不存在的,但是大家在网上从大家那里下载了电影的一小部分,最后拼装成一个完整的文件。

在这个游戏中,所有玩家的地位是完全平等的,任何玩家都可以随时离开和加入,只要还有人在玩,整个游戏就可以正常运行,没有人拥有特殊的权力。 这称为权力下放。

第二个例子就是我们日常使用的银行卡或者支付宝、微信等人民币支付方式。 让我们暂时搁置现金。 我们以无现金方式支付人民币购买东西。 这是一个中心化的游戏。 它的中心有很多层次。 比如支付宝的服务器是一级中心,支付宝资金的服务器是工商银行、中信银行等托管银行。 就是二级中心,这些银行的下一级中心就是中央银行——中国人民银行的服务器。

在这个游戏中,不同等级玩家的权力和地位是不对等的。 最大的老大当然是央行,它连货币都可以发行。 它的力量如此强大,以至于它可以在几分钟内偷走我们所有的钱。 这很简单。 它只需要突然发更多的货币,如果价格突然上涨一百倍,我们的钱就会被抢走。 货币游戏能否像下载电影一样去中心化? 这也是可能的。 比特币系统就是这样一个去中心化的货币游戏系统。 你可以把它看成是一次大规模的货币实验。

比特币游戏就是这样玩的,有两个核心规则。 首先,它的发币不是由某个机构决定的,而是公开了一套算法。 每计算出一个符合要求的数字,就相当于挖了几个比特币。 任何人都可以数,绝对公平,谁也不能作弊,因为算法本质上就是一个一个凑数,一个一个数。 第二,比特币的交易信息不是记录在某个服务器上,而是同步记录在每个参与游戏的玩家电脑上。 这种交易记录理论上几乎不可能被篡改。

这就是“去中心化账本”。

这样一来,所有游戏玩家的地位和权力都是完全平等的,几乎没有一个玩家是特殊的。 为什么要加上“差不多”二字? 因为,毕竟那些能挖比特币的矿主还是有些特殊的,但是这种特殊性并不算太大,对于矿主来说也没有什么门槛,只要你买得起一台好电脑的人都可以一个矿主

不得不说,比特币这种“去中心化”的设计非常精彩。 它的发明者,神秘的中本聪,不愧是“大葱”。

理解去中心化就等于理解区块链。 一个真正的区块链项目是通过合理的游戏规则设计,辅以信息技术,实现去中心化理念的项目。 比特币系统是去中心化理念和区块链技术的优秀示范项目。

毫不夸张地说,我认为这是一场互联网观念的革命,也是人类平等化的又一次革命。 上一次革命打破了人与人之间地位的不平等,这次打破了游戏规则本身的不平等。 也正是因为如此,区块链才能激起人们的热情。 这是一个听起来可以推翻所有旧规则的新事物。

但是,在我看来,比特币系统并不是一个成功的区块链应用,甚至是先天不足。 你为什么这么说? 因为,从前面介绍的两个核心比特币游戏规则来看,我们知道它有以下先天缺陷:

首先,比特币客户端软件需要巨大的存储空间,因为每个节点都必须记录从比特币系统诞生第一天开始的所有交易记录,截至本文撰写之日(2018年2月13日),这个交易记录文件已经有147GB那么大了,只会增加不会减少。

其次,为了防止有人作弊,比特币系统有一套非常复杂的游戏规则来保证交易记录的真实性,导致每笔交易的确认时间一般需要一个小时甚至几天。 想一想,如果你用比特币在大街上买一杯奶茶,会发生什么。

比特币等于区块链吗_区块链和比特币之间的关系_比特币交易链区块拥堵

第三,比特币最多只有2100万个,不管有多少人在挖,系统规则决定了平均每十分钟可以产出多少个比特币(2018年是每十分钟12.5个比特币)。 矛盾就像那句话:人们对比特币的需求不断增长与比特币数量不足之间的矛盾。

比特币不能代表区块链,区块链也不是比特币。 区块链未来可以有哪些应用?

事实上,区块链解决的核心问题是信任问题。 银行、保险公司、证券公司等所有金融机构的生存都依赖信用。 我们之所以有信心购买股票、期货和纸黄金,是因为我们信任作为交易中介的机构。 而这些交易中介是金融活动的中心。 我们宁愿为此支付一定的手续费和交易费,让金融机构赚大钱。

但是,当区块链在人们的观念和技术上成熟之后,这种中心化的金融机构就有可能被颠覆,因为我们可以用区块链的观念和技术来改写游戏规则区块链和比特币之间的关系,让所有的金融产品交易不再需要一个中心,但都是点对点完成的,理论上信用问题是可以保证的。

到时候不知道会不会需要银行,因为银行还是涉及到国家利益的比较复杂的问题,但是肯定会有很多商业金融机构会受到区块链的冲击。

再比如,公证也是一个典型的中心化机构,出售信用,区块链完全可以改写公证行业。 后面会详细介绍区块链的应用。

至此,我们已经对比特币和区块链有了一个大概的概念。 接下来,我会帮你剥下一层洋葱,了解比特币系统的基本原理。

比特币基础

数字指纹和非对称加密

区块链和比特币之间的关系_比特币交易链区块拥堵_比特币等于区块链吗

去中心化的账本很好理解,只要把所有的交易记录都记录在每台电脑的账本上,然后就可以利用电脑强大的计算能力,随时随地查出每个人的余额。

但不要忘记,在线记账不同于离线记账。 网络上到处都是来来去去的新闻,我们根本不见面。 如果您收到一条消息说“A 支付 B $5”。 这时候你不禁要问:

一、如何保证这些信息内容的完整性? 二、如何保证信息的真实性? 如果不解决这两个问题,去中心化账本的理想就无法实现。 有解决办法。 我们先来看看如何解决第一个问题:保证会计信息的完整性。

这里要介绍的一个概念是数字指纹(在很多文章中也称为数字签名和哈希值)。 计算机上的任何信息,按照国际统一的编码标准,最终都是以0和1存储的,也就是著名的二进制。 例如,“钱”这个词用二进制表示为“1001010010110001”。 例如,“A支付5元给B”这句话用二进制表示为:

010000011100101001011111001110110110000011010110100010

100001110010100101100011111101101100101000010

普通人看到二进制往往无法与数字建立联系。 其实这串二进制数也可以用一组十进制数来表示,它们是完全相等的:

100000111001010080606408664086260086008422488464406

842602666664446622202242228042826680682422068400

看到十进制数,很多人会认为这确实是一个“数”。 这是数字指纹吗? 还没有。

二进制信息与原始信息只是一对一的编码关系。 一个英文字母或数字对应8位,一个汉字对应16位。 原始信息越长,二进制代码越长。 任何原始信息都可以转化为一串数字区块链和比特币之间的关系,有了这些数字,就可以进行数学运算,玩出各种花样。

现在,我们向数学家提出一个要求:请设计一种算法,计算出任何一条信息,无论长短,都对应一个唯一的“数字指纹”。 但还有两个附加条件:第一,指纹的长度必须固定; 第二,“指纹”只能从“原始信息”推算出来,谁也不能从“指纹”反推“原始信息”。

区块链和比特币之间的关系_比特币等于区块链吗_比特币交易链区块拥堵

这个要求看似过分,但对数学家来说并不难。 1993年,美国国家安全局发布了SHA算法。 全称是Secure Hash Algorithm。 中文一般翻译为“secure hash algorithm”或“secure hash algorithm”。 有时候听到人家说“嘻哈算法”,不禁暗笑,大家别看错了)。

Hash这个词在中文中没有对应的意译。 如果让我意译的话,我会翻译成“数字摘要算法”,基本上可以表达算法的意思,就是从目标对象中提取一个特征摘要,就像一个人的指纹一样。

SHA算法从1993年发布第0代,到2015年发布第3代,22年间经历了4次升级。 比特币采用的是第二代算法,简称SHA-256算法,其中“256”是指该算法生成的指纹长度固定为256位。 您可以轻松地在线找到生成 SHA-256 指纹的网页。 该算法是公开的,任何人都可以使用它。 例如,字符“钱”的SHA-256指纹为:

000011101011100001100011110001111000110110100011111000111

0000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000

0000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000

“A支付5元给B”的SHA-256指纹为:

11110111101110110010100110111010110111110000010111010000

000000000000000000000000000000000000000000000000000000

000000000000000000000000000000000000000000000000000000

000000000000000000000000000000000000000000000000000000

00000000000000000000000000000000000000000

可以看到,不管原始信息有多长,生成的指纹都是一样长的。 而且,这个指纹有两个显着的特点: 1、只要稍微改变原有的信息,哪怕只是改变一个数字,整个指纹都会发生巨大的变化,没有规律可循; 2、截至本文撰写之时,还没有公开的方法可以从指纹中逆向计算出原始信息,一般认为理论上无法破解。

但是在实际使用中,256位的二进制数据太长了,使用起来极其不方便,而且很容易碍眼。 所以指纹通常都是以十六进制显示的,反正二进制和十六进制是一一对应的。

“钱”的十六进制指纹是:

0eb863c78da3e38b6b92d1f3999566e5d8e17a6f700a112c8993cf6bfc48f70b

“A支付5元给B”的十六进制指纹为:

f7bb29badf05d41e60b1036d749f134a901c7a97daef7a1fe4e1e14471bd4833

这看起来简单多了。 我们可以试试把“5元”改成“6元”,看看指纹变化了多少。 以下是修改后的指纹:

1d48da12b0fb29efe6f690185922f96d259bd887343735898bfc3901a83b58c3

比特币交易链区块拥堵_比特币等于区块链吗_区块链和比特币之间的关系

看,只有一个数字变了,但几乎没有一个指纹是一样的。 这就是SHA算法的神奇之处,它也保证了指纹无章可循,无法逆向破译。

有了数字指纹,可以解决第一个问题:保证会计信息的完整性。 怎么做? 很简单,我们只需要制定一个规则,任何发送信息的一方都必须发送原始信息的指纹。 那么接收信息的一方只需要使用公开的SHA-256算法为原始信息生成一个指纹,并与接收到的指纹进行比对即可。 如果一致,则说明接收到的信息是完整的; 收到的原始信息已因某种原因进行了修改。 这个原因可能是数据传输过程出错,也可能被篡改等。

会不会是巧合,原来的信息和指纹都因为某些传输错误而发生了变化,而错误的指纹数据是错误后的原始信息指纹,即负的和负的都是正的? 当然,这也不是绝对不可能的。 有可能,但是从概率上来说,如果要自然发生的话,估计宇宙毁灭之前都不会发生一次。 概率很低,完全可以忽略不计。

但是,你可能也想到了黑客恶意篡改的另一种可能。 因为SHA算法是公开的,如果黑客截获了原始信息和指纹,他就会修改原始信息,比如把“A付5元给B”改成“A付5元给C”,生成一个新的指纹已发送给您。 这该怎么做? 这就是我们要解决的第二个问题:如何保证信息的真实性? 解决这个问题就相当于解决了信息发送者想要否认的问题。

解决第二个问题的关键是对指纹进行加密。 但是,这种加密不可能是我们在谍战剧中看到的电报加密方式。 大家不妨回忆一下我看过的谍战剧。 我的井下工人接到一封电报,上面写着2352,他从书架上拿出一本书,翻到第23页,数到第52个字,上面写着“撤”字。 也就是说,组织通知这名战友立即撤退,有人出卖了。 这种加密方式的缺点是只要敌人也掌握了密码本,他们不仅可以破译电报,还可以发送假电报进行钓鱼。 这种加密方式称为“对称加密”,解密过程只是加密的逆过程。

“对称加密”在我们想要的去中心化账本系统中并不好用,因为我们需要让网络上的每一个信息接收者都能够解密密文并知道原始信息,并且让黑客连得到密文都可以只能发呆,无法篡改密文。

关键是加密和解密的方法必须不同。 因此,需要数学家们想出一种新的加密算法,它是非对称的,加密和解密不是互惠的过程。

你能想出这么巧妙的加密算法吗? 当然可以,否则就没有比特币。 下面我用一个简化版的非对称加密算法来模拟一下我们想要达到的效果。

原始消息是一组数字:269。

现在,我使用只有我知道的加密算法得到一个密文:24479。

然后,在告诉大家24479的同时,我也宣布,解开我的密文的钥匙是数字11(后面我们称这个公钥为公钥),任何人都可以将24479乘以11,取最后三位数字结果,你可以得到我想告诉你的原始信息。 不相信吗? 让我们试试看:

24479×11=269269

哇,太有意思了,不仅后三位,就连前三位都是原始信息。 我如何加密它? 很简单,我把原始信息乘以91得到密文,而这个91可以称为“私钥”,我的加密私钥。 这样,加密和解密是完全不同的算法。

大家可以试试看,任意一个三位数乘以91,结果再乘以11,最后的结果一定是原来的三位数写了两次。 例如:218×91×11=218218。

如果任何两位数乘以91,结果再乘以11,最后结果的最后两位必须与原数相同。 例如:18×91×11=18018。 至于背后的数学原理,大家稍微想一想就明白了。

但是请记住,我举的这个例子只是为了让大家体验一下什么是非对称加密,因为这个例子中的算法太简单了,所以知道公钥是11的人很容易猜到私钥是91。但比特币系统采用的算法要比这复杂得多。 该算法确保即使知道原始文本、密文和公钥,也没有人可以猜出私钥。 也就是说,黑客只能解密,不能加密,不能修改密文。

这样牛逼的算法就是大名鼎鼎的“椭圆曲线算法”,简称ECC算法。

它是1985年由两个美国人Neal Koblitz和Victor Miller独立提出的,在密码学中得到了广泛的应用,也就是说,在过去的十年里,数学家真是牛逼。

通过该算法,可以保证去中心化记账系统中每笔交易记录的真实性。 下面我们来演示一下比特币的去中心化记账系统是如何使用SHA和ECC算法来保证账本的完整性和真实性的(以下是对原理的简单解释,真正的过程要复杂得多,但原理是一样的)。

需要记录的原始交易信息:A支付给B 5元(以下简称“原文”)。

第一步:使用SHA生成原文的数字指纹:

f7bb29badf05d41e60b1036d749f134a901c7a97daef7a1fe4e1e14471bd4833

比特币交易链区块拥堵_区块链和比特币之间的关系_比特币等于区块链吗

第二步:随机生成一个与指纹格式完全一致的私钥,例如:

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

第三步:使用ECC用私钥对第一步得到的数字指纹进行加密,得到密文:

869ac57b83ccf75ca9da8895823562fffb611e3c297d9c2d4612aeeb32850078

第四步:根据私钥生成公钥:

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

第五步:将原始文本、密文和公钥广播到整个比特币网络。 信息发送步骤到此结束,接下来是信息接收步骤。

第六步:接收方使用ECC用公钥对密文进行解密,得到指纹1。

第七步:利用SHA对原文生成数字指纹,得到指纹2。

第八步:检查指纹1是否等于指纹2。

第九步:如果相等,则确认该信息为合法交易信息,添加到您的账本中。 如果不相等,则丢弃该信息。 目前为止就这样了。 在真实的比特币网络中,交易双方都是完全匿名的。 交易员A或者B都是账户(有的文章叫“地址”,意思一样),账户后面没有记录主人信息,可以是狗也可以是人工智能,而账户是根据公钥通过一定的算法生成的。

一个私钥可以生成几乎无数个不同的对应公钥,也就是说可以生成几乎无数个不同的对应账户。 谁拥有私钥,谁就是账户的所有者。

在比特币网络中,私钥是账户中使用比特币的唯一凭证。 如果你的私钥被偷了,你就永远失去了,你打官司也拿不回来,因为没有办法证明他的私钥是从你那里偷来的。

深入了解比特币原理

区块链技术

到目前为止,我们去中心化账本的理想只实现了一半,还没有完全实现。 为什么? 因为还有两大问题没有解决。

第一个问题:账本同步问题。 比特币网络中有很多计算机。 一个交易消息发出去,当然不可能所有的电脑都开机。 计算机无法立即收到消息。 这样会导致不同电脑上的记录不同步。 谁的电脑记录为准?

第二个问题:如何防止同一个比特币被重复使用? 如果有一个黑客,他只有一个比特币,但是​​他同时把这个比特币支付给A和B(虽然理论上不可能同时真实存在,但是间隔可以很短),所以两个比特币会在网络上播出。 信息有两条,一条是支付给A的信息,一条是支付给B的信息。由于网速的原因,有的电脑必须先收到信息1,有的电脑先收到信息2,这样就形成了一个矛盾。 如何判断哪条信息是有效的?

为了解决以上两个问题,区块链技术应运而生。

中本聪的论文真正在全世界掀起风暴,并不是​​因为上一节介绍的比特币的基本工作原理——数字指纹和非对称加密都是成熟的技术,而真正让他名声大噪的是区块链技术。 但请记住:比特币不是区块链,它只是区块链技术的一种具体应用。

区块链到底是什么? 它是如何巧妙地解决账本同步和信息不重复的问题呢?

中本聪的总体思路是这样的:比特币网络中的所有计算机只承认唯一的一个账本。 当任何一台计算机访问比特币网络时,它必须首先同步这个唯一的账本。 任何一台计算机想要向这个账本中写入新的信息,都必须完成一套繁琐的“程序”。 这套程序非常复杂,几乎不可能同时完成两次。 很多时候,还有一个规则决定哪些信息是合法的,哪些应该被丢弃。

比特币等于区块链吗_区块链和比特币之间的关系_比特币交易链区块拥堵

让我一步步为您揭开区块链技术的面纱。

为什么叫“区块链”? 因为中本聪将这个账本设计成一长串首尾相连的“信息包”。 每个信息包称为一个“块”。 每一个都有一个唯一的数字——在比特币系统中,这个数字叫做高度(height),这些数字就是自然数1、2、3、4……一路向下,没有跳跃,没有中断和重复。

下面解释块的具体规则。

当然,第一个区块是由区块链的发明者中本聪创建的。 那是北京时间2009年1月4日。 在芬兰赫尔辛基的一个小型服务器上,第一个区块诞生了。 这也被称为“创世块”。 在这个块上,包含的主要信息是:

区块高度:0

泰晤士报 03/Jan/2009 财政大臣即将对银行进行第二次救助

(翻译:时代周刊头版文章标题,2009 年 1 月 3 日:财政大臣面临对银行的第二次救助)

“某账户”获得50比特币奖励

中间一段是刻在第一块上的中本聪纪念。 从第二个区块开始,每个区块都必须严格按照比特币系统的规则创建。 区块规则为(至少包括以下信息):

前一个区块的数字指纹+固定信息+收到的交易记录+一个随机数

区块链的奥秘之一就在于尾部添加的随机数(nonce),因为它太神秘了,像我这样的普通人只能享受它,所以为了方便解释,我将其称为“奥林匹克数”。

中本聪规定,这个新区块的数字指纹(一个256位二进制数)的前72位必须全为0。

回想一下我们之前介绍的数字指纹的知识。 因为SHA算出的指纹是一组数字,没有规律可循,所以满足中本聪的变态规则的唯一方法就是靠运气数数字,从0开始不断尝试,直到满足要求。 这是一个纯粹的概率问题。 让我们计算一下满足这个要求的概率。

因为二进制数,每一位只有两种可能,0或1,所以组成一个奥运数字的可能性是2的1/72,即:

1/4722366482869645213696

这个数字已经变得很棘手,大约是 1/4.7 万亿。 也就是说,平均需要进行4.7万亿次SHA计算才能获得一个奥数,可见每一个奥数的珍贵。

最巧妙的是,奥数不是某个方程的解,一解就少一,因为每块的字符串不一样,所以每次找奥数都需要从0开始,任意数字可能会成为新奥赛无章可循。

一旦你成功找到一个奥林匹克,你将获得一次记账权,你可以在账本中添加一个新的区块。 那么,为什么要花时间寻找奥数和记账呢? 因为好处实在是太大了。

比特币系统规定,每成功添加一个区块,这台记账计算机(实际上是一个账户)可以获得 12.5 个比特币的奖励(截至撰写本文时),而这个区块中所有交易的费用,总计金额取决于交易频率(平均约 2 个比特币)。 这样一来,相当于每找到一个奥运号码就获得14.5个比特币的奖励,按照本文撰写时比特币的市场价格,相当于12万美元。 如此丰厚的奖励,自然会吸引大量计算机抢夺记账权。

找奥数就是抢记账权,抢记账权就是挖比特币。

因此,奥数的搜索也被形象地称为“挖矿”。 一台用来挖矿的电脑叫做“矿机”,满屋子的矿机当然可以叫做“矿场”。 矿山的主人就是“矿工”。

不过,我需要给你解释一下挖矿的难度,让你打消挖矿的冲动。 个人电脑的计算速度约为每秒60万次SHA计算,这意味着个人电脑平均需要1000万年才能凑出一个奥运号码。 当然,这是一种概率计算。 我理论上不能排除某人的性格超新星爆炸。 仅仅算一次奥赛,就有4.7万亿分之一的概率得奖。 但我还是要劝你,不要相信你有那样的缘分。

让我向您展示他们的专业地雷长什么样:

比特币交易链区块拥堵_比特币等于区块链吗_区块链和比特币之间的关系