主页 > imtoken怎么注册 > 区块链和比特币(第 1 部分)

区块链和比特币(第 1 部分)

imtoken怎么注册 2023-01-17 09:41:44

区块链已经成为近两年最火的互联网词,但估计大部分人只是熟悉,并不真正了解。

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

本文是对比特币和区块链知识的深入介绍。我努力遵循“自上而下,逐次精炼”的原则,让比特币和区块链知识像剥洋葱一样。同理,一层一层往下走,让读者对自己剥离的每一层都有完整的知识增益。

去中心化

本文图片均来自“读书图书馆”微信公众号

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

例如,区块链相当于电子商务。想想 20 年前有多少人了解电子商务是什么。它本质上是一个概念,但是这个想法必须借助一定的技术手段来实现。比特币相当于淘宝,是电子商务的特定应用。

所以,要了解什么是区块链,我们必须先了解什么是去中心化。我举两个例子来帮助你理解:

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

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

后来出现了一种去中心化的下载方式,就是BT下载,也叫P2P(点对点)下载。现在我们说P2P,一般指的就是那种个人借贷网站,但是最初的概念是从BT下载的,P2P就是person-to-person,point-to-point。洪流下载的原理与电影网站的原理完全不同。电影不是存储在某个服务器上,而是每个人从网络上的每个人那里下载电影的一小部分,最后形成一个完整的文件。

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

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

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

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

这是一个“去中心化账本”。

这样一来,所有玩家的地位和权力都是完全平等的,几乎没有一个玩家是特殊的。为什么要加上“几乎”这个词?因为毕竟那些能挖比特币的矿工还是有点特殊的,但是这个特殊性并不算太大,而且对矿工没有门槛,只要你买得起一台好电脑,任何人都可以成为矿工.

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

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

毫不夸张地说,我认为这是互联网概念的一次革命,也是人类平等化的又一次革命。上一次革命打破了人与人之间的地位不平等,这一次打破了游戏规则本身的不平等。这就是为什么区块链引发了如此多的热情,这是一个听起来可以颠覆所有旧规则的新事物。

但是,在我看来,比特币系统并不是一个成功的区块链应用,甚至本身就存在不足。你为什么这么说?因为,从上面介绍的两条比特币核心游戏规则可以看出,它存在以下固有缺陷:

首先,比特币客户端软件需要巨大的存储空间,因为每个节点都需要记录从比特币系统第一天开始的所有交易记录。截至发稿时(2018 年 2 月 13 日),这个交易记录文件已经有 147GB 大,而且只会增减。

第二,为了防止有人作弊,比特币系统有一套非常复杂的游戏规则来保证交易记录的真实性,以至于每笔交易的确认时间一般需要一个小时甚至几天. 想想看,如果你去街上用比特币买一杯奶茶会怎么样。

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

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

其实区块链解决的核心问题是信任问题。所有的金融机构、银行、保险、券商等,都靠信用生存。我们之所以有信心购买股票、期货和纸黄金,是因为我们信任充当交易中介的机构。而这些交易中介是金融活动的中心。我们宁愿为此支付一定的手续费和交易费,金融机构也赚不少钱。

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

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

再比如,公证人也是典型的卖信用的中心化机构,区块链可以彻底改写公证行业。区块链的应用在后面会详细讲解。

至此,我们已经建立了比特币和区块链的总体概念。接下来,我想帮你剥下一层洋葱皮,了解比特币系统的基本原理。

比特币的基本原理

数字指纹和非对称加密

去中心化的账本还是很容易理解的,只要把所有的交易记录都记录在每台电脑的账本上,那么随时可以利用电脑强大的计算能力查出每个人的余额,任何地方。

但不要忘记,在线记账不同于线下记账。在互联网上,新闻来来去去,我们根本不见面。

如果您收到一条消息“A 支付 B 5 美元”。这时,你不禁要问:

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

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

0100000111001010010111110011101101100000110101101000101000011100101001011000111111101101100101000010

普通人在看到二进制时往往无法与数字联系起来。其实这串二进制数也可以用一组十进制数来表示,它们完全相等:十进制数,很多人会认为这确实是一个“数”。这是数字指纹吗?还没有。

二进制和原始信息只是一对一的编码关系。一个英文字母或数字对应8位,汉字对应16位。原始信息越长,二进制编码越长。任何原始信息都可以转换成一串数字,有了数字就可以进行数学运算,玩出各种花样。

现在,我们向数学家提出一个要求:请设计一种算法,计算出任何一条信息对应的唯一“数字指纹”,无论多长或多短。但是还有两个附加条件:一、指纹的长度必须是固定的; 二、“指纹”只能从“原始信息”中计算出来,没有人可以从“指纹”中逆向计算出“原始信息”。

这个要求可能看起来有些过分,但对数学家来说并不难。 1993年,美国国家安全局发布了SHA算法,全称Secure Hash Algorithm,中文一般翻译为“Secure Hash Algorithm”或“Secure Hash Algorithm”。有时候听到有人说“嘻哈算法”,我忍不住笑了,别看错了)。

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

SHA算法于1993年发布第0代,2015年发布第3代,二十二年四次升级。比特币使用第二代算法,简称SHA-256算法,其中“256”表示该算法生成的指纹长度固定为256位。大家可以很容易在网上找到SHA-256比如指纹的这个算法是公开的,谁用,网页,“钱”字的SHA-25是:

000011111111100111011111111111110111101101101111111111110111001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Y来

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

11110111111111111111111111101111111111111111111111111111111111111100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000来还原2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000来

大家看到,不管原始信息长什么样,生成的指纹都一样长而这个指纹有两个显着的特点: 一、只要对原始信息稍作改动,哪怕只改动一个数字,整个指纹都会发生巨大的变化,没有规律可循; 二、截至本文发稿时,世界上还没有公开的方法可以从指纹中逆向计算出原始信息,一般认为理论上是不可能破解的。

但是在实际使用中,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支付5元给B(以下简称“原文”)。

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

f7bb29badf05d41e60b1036d749f134a901c7a97daef7a1fe4e1e14471bd4833

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

18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725

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

869ac57b83ccf75ca9da8895823562fffb611e3c297d9c2d4612aeeb32850078

第四步:公开生成一个结果:

600FFE422B4E00731A59557A5CCA46CC183944191006324A447BDB2D98D4B408

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

第六步:接收方使用ECC通过公钥解密密文得到指纹1。

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

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

第9步:如果相等,则确认该信息为合法交易信息,并将其添加到您的账簿中。如果不相等,则丢弃该信息。这一切都结束了。在真正的比特币网络中,交易双方是完全匿名的。交易者A或B是一个账号(有些文章中称为“地址”,含义相同),账户背后的所有者信息没有记录。可以是狗也可以是人工智能,帐号是根据公钥通过一定的算法生成的。

一个私钥可以生成几乎无限多个不同对应的公钥,这意味着可以生成几乎无限多个不同对应的账户。拥有私钥的人就是账户的所有者。

在比特币网络中,私钥是账户中使用比特币的唯一凭证。如果您的私钥被盗,您将永远丢失,如果您提起诉讼,您将无法取回,因为无法证明他的私钥是从您那里窃取的。