主页 > imtoken苹果下载 > 区块链和比特币(第 1 部分)

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

imtoken苹果下载 2023-01-17 08:33:13

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

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

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

去中心化

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

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

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

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

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

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

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

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

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

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

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

给你账户和密码请你帮买比特币

这是“去中心化账本”。

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

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

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

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

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

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

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

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

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

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

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

我不知道到时候银行是否需要它们,因为银行也涉及到更复杂的国家利益问题,但肯定会有很多商业金融机构受到区块链的影响。

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

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

给你账户和密码请你帮买比特币

比特币基础

数字指纹和非对称加密

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

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

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

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

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

0100000111001010010111110011101101100000110101101000101000011100101001011000111111101101100101000010

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

100000111001010080606408664086260086008422488464406842602666664446622202242228042826680682422068400

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

二进制和原始信息只是一对一的编码关系。一个英文字母或数字对应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-256指纹为:

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和取结果的最后三位,得到我想告诉你的原始信息。不相信?让我们试试吧:

2447911=269269

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

你可以试试。将任意三位数字乘以 91,然后将结果乘以 11。最终结果必须是原始三位数字写入两次。例如:2189111=218218。

如果任何两位数乘以 91,结果乘以 11,则最终结果的最后两位数必须与原数相同。例如:189111=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是一个账号(有些文章中称为“地址”,含义相同),账户背后的所有者信息没有记录。可以是狗也可以是人工智能,帐号是根据公钥通过一定的算法生成的。

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

在比特币网络中,私钥是账户中使用比特币的唯一凭证。如果您的私钥被盗,您将永远失去它,并且您将无法通过诉讼找回它,因为没有办法证明它。的私钥被你偷走了。