主页 > imtoken钱包下载2.0安卓版 > 朴实无华的比特币,区块链入门

朴实无华的比特币,区块链入门

imtoken钱包下载2.0安卓版 2023-01-17 06:42:17

原文链接:朴实无华的比特币,区块链简介

几个月前,一位教授分布式系统的教授开玩笑地告诉我,现在人工智能就是人工智能。计算机系统的时间?现在看来,这股风潮真的来了,而且来的非常猛烈。不幸的是,并不是每个人都关心分布式系统。比特币暴涨,区块链火热,各种加密货币ICO(Initial Coin Offering)层出不穷,新闻媒体争先恐后地报道,各界人士纷纷跳出来说区块链将塑造未来,潜力无限。其实很多人都是在迷雾中看花,所以我想尝试用一个简单易懂的方法来帮你摆脱这层迷雾。我不是专家,如有错误和不准确之处,请指出并讨论。

让我们再次让比特币和区块链变得不酷!

比特币,区块链简介

简单来说,比特币是一个去中心化的),区块链是一个分布式(理论上完全是 P2P)的数据库。比特币利用区块链技术实现“去中心化”,解决“双花问题”。比特币是由一个名叫中本聪的人在 2008 年提出的(比特币:一种点对点的电子现金系统)。用户对用户的电子货币。

比特币的实现主要由两部分组成:

数字签名、加密支付

想象一下,如果小明现在要付小方 2 币,所以他写了“小明付小方 2 币”,同理,如果 A 想付 N 币给 B,A 可以写“A 付 B N 币” 那就是问题所在。如果小明很不诚实,他可以随意写“小方付小明20币”。如何保证支付的可靠性?

比特币或其他加密货币通过数字签名加密支付。当用户加入比特币生态系统时,每个用户都会获得一个比特币地址和一个比特币钱包。钱包实际上是一对密钥,包括公钥。以及私钥(public & private key),私钥用于生成数字签名,公钥用于非对称加密。简单来说,非对称加密可以保证只有小明本人(本质上是拥有小明私钥的人)可以使用他的比特币进行支付。所以,与其说小明的比特币,不如说小明的私钥比特币,这也是比特币匿名的原因之一。

另外一个原因是比特币网络的用户是由比特币地址组成的,也就是说当你要支付的时候,比特币网络记录的是“[一个比特币地址]支付[一个比特币地址]”,而不是直接记录“某某支付某某”。地址的所有者由其私钥证明。

因此,保护​​您的私钥非常重要。事实上,私钥可能会因为各种原因而消失(电脑坏了,内存丢失等)。当私钥消失后,就再也找不到对应的比特币了。

区块链,记录交易顺序

好的,现在我们通过非对称加密来保证支付的可靠性,也就是说无论小明有多少坏水,他都做不到。冒名顶替者小芳写了“小芳付小明20币”。小明想了想,虽然他不能伪造付款,但他可以双花他拥有的硬币。比如小明写“小明付小方1币”,小明写“小明付小李1币”,但实际上小明一共只有1个币。如何防止这样的“双花问题”发生?

在中心化货币(如实物货币,或Q币)的世界中,权威第三方(如银行、腾讯的数据库)可以确认付款人有足够的支付金额,因为第三方的整个交易记录交易系统,包括交易顺序。

我们是否也应该引入权威的第三方? “去中心化”的想法毫无意义。我们需要一个系统,其中每个参与者都同意唯一的正确交易历史,包括交易顺序。简单来说,每个参与者(其实不是每个节点,而是网络中的矿工,后面会解释)都会记录整个网络的交易历史和交易顺序,而且这个交易记录是一致的、唯一的(一致性和共识)。

这个系统/网络是什么?现在被吹捧为“将改变每个行业”的正是区块链。

从技术上讲,区块链实际上是一个“对拜占庭故障具有高容忍度”的 P2P 网络(Peer-to-Peer network)。就是矿工,下面会详细说明。 Mining and miners) 存储整个网络的唯一交易历史。

P2P网络是一种分布式系统。什么是分布式系统?比如Snapchat的用户这么多,一台电脑/服务器能存储的数据是有限的,肯定是不够的,那我们该怎么办呢?一台电脑是不够的,几万台电脑总是够的,对吧(其实可能还不够,这里只是一个例子)?这数千台计算机通过网络相互交换数据,形成一个分布式系统。 P2P网络,通俗的讲就是网络中的每个用户都是平等的,享有同样的权利和义务(实际上,完全去中心化的P2P网络几乎是不可能存在的)。 “拜占庭失败”仅仅意味着网络中的用户偏离了他们规定的行为,例如停机、叛变和不诚实。 “对拜占庭故障的高容忍度”对比特币来说很重要,因为容忍度直接决定了整个区块链网络的稳定性和可靠性。

像这样的P2P网络并不是什么新技术,有很多高容忍度的P2P网络(比如Raft),比特币最大的发明就是新确认的比特币交易是通过挖矿(比特币)进行的。挖掘)记录。

如果你被上面的术语弄糊涂了,没关系,不影响你的理解。让我们仔细看看区块链。看完你会发现,理解起来并不复杂:

哈希

要了解区块链,首先要了解一个叫做哈希的概念。这里的哈希是指加密哈希。简单来说,Hash 就是把输入变成定量长度的二进制数。例如输入“小明付小芳2个币”,输出哈希为“01000010....00”。只要两个输入不同,输出哈希就不会相同。 Hash 的另一个特点是很容易计算输出 Hash,几乎不可能从输出 Hash 中反转输入字符串。挖矿也与 Cryptographic Hash 密切相关,下文将对此进行说明。比特币挖矿使用双 SHA-256。

阻止

区块链最基本的单元是区块。每个区块由区块头和区块体组成。

(其实在中本聪的论文中,下图左侧并没有提到块体,这里的区分只是为了便于理解。)

@ >

块体记录交易比特币 区块链技术,块头记录了该块的一些信息,例如该块的Hash、前一个块的Block Hash、Nonce和Root Hash(又名Merkle Root)。每个区块的 Hash 不同,相当于区块的 ID 号。通过保存前一个块的哈希,这个块可以和前一个块连接起来,网络中的块连接在一起形成一个区块链。所以一个简单但不夸张不做作的区块链图如下:

区块哈希是如何计算的?请看以下代码:

Root Hash = Cryptographic Hash(区块交易数据) Block Hash = Cryptographic Hash(区块高度、生成时间、最后一个区块Hash、Root Hash、Nonce)

严格来说,根哈希的计算并不像上面的代码那么简单,而是为了证明根哈希依赖于区块的交易数据,而区块哈希是依赖于根哈希的,结论是区块Hash依赖于它记录的交易数据。交易数据一旦写入区块,就无法更改。因为一旦改变了,区块Hash也会随之改变。为了在整个区块链中保留更改的块,必须更改此块之后的所有块。这就是“拔一根毛,动一身”。

看到这里,总结一下:

挖矿:新区块的诞生

如上所述,数字签名可以确保交易的真实性。但在比特币网络中,仅确定交易的真实性是不够的。为了使交易成功,交易必须在确认之前记录在区块中。新区块的诞生称为比特币挖矿。

挖矿过程是这样的。矿工记录网络中的交易并计算下一个区块的哈希值。下一个区块的哈希是如何计算的?这是上面提到的准代码中的两个公式。同时,可能有很多矿工在挖,如何决定下一个区块由哪个矿工挖?比特币的开发者决定,当矿工计算的区块的哈希值恰好达到某个正确值时,该区块被成功挖出,区块中记录的交易被正式确认。

挖矿难度:工作量证明

正确的区块哈希需要以“足够的零”开头。比如下一个区块Hash需要3个0开头,那么矿工计算的区块Hash必须是“000....”的形式。您需要开始的零越多,计算就越困难,计算成本也越高。上面提到的 Nonce 记录了该块在成功之前尝试计算哈希的次数。比如当前区块一般需要9亿次计算才能挖出一个矿。当然,也有可能尝试上万次才能成功。挖矿需要大量的计算,而且耗时耗电。计算这个正确哈希的过程称为“工作量证明”。由于 Hash 的特性,“工作量证明”的特性是难以计算出正确的结果,但容易验证正确的结果。很多人把这个过程称为“解谜”,但计算出正确的哈希不需要心理输入,只需要计算机不断计算新的哈希,直到正确为止。

一旦有矿工挖出下一个区块,矿工会通知全网(广播),全网会识别并同步新生成的区块,其他正在计算该区块的矿工将不被允许。不要中途放弃计算,全身心投入到下一个区块的计算中。

如果碰巧有几个矿工同时挖下一个区块,其他矿工会保存新的区块,直到某个区块分支比其他区块分支长,那么就会认定最长的分叉就是官方区块链。

新块生成时间。如果网络中的矿工越来越多,或者新区块生成速度更快,计算正确哈希的难度会自动增加。比特币的开发人员指定生成新块平均需要 10 分钟。这条 10 分钟规则有两个目的:

确保网络中的其他矿工有足够的时间来同步交易记录,即同步区块链。如果更新速度过快,可能会导致矿工之间的区块链不同步。确保恶意矿工无法伪造区块/区块链。如果出块时间过快,恶意矿工生成假区块链的速度可能比其他诚实矿工生成的真实区块链更快。

防止恶意攻击。如何防止对区块链的恶意攻击?比如现在区块链网络有4个矿工(小明、小方、小李、小张),小明刚挖了下一个区块,里面记录了一笔交易“小明付小方20”币,然后他没有通知全网,只告诉了小方,然后小方马上更新他的区块链,然后挖下一个区块。所以这个时候小方会误以为“小明付小方20币”,交易已经已经被确认了,但是其他矿工不会这么想。但是,由于小方还是会听到其他矿工的新区块通知,为了让小方继续相信自己的假区块,他必须比其他矿工更快地挖出新区块来维持自己的假的区块链,而这基本上是不可能的,除非小明控制了全网51%以上的算力。(这样的造假其实是有可能的,见下文)

潜在的恶意攻击。如上所述,除非恶意矿工控制区块链网络中超过 51% 的算力,否则不可能攻击整个网络。在实践中,一般来说,只要攻击者的区块分支长度达到6,也就是说,恶意攻击者可以在其他矿工之前连续出块6个,那么他的出块就成功了。连续出块 6 个块是非常非常困难的,但是一个叫做“BTC Guid”的矿池已经成功地连续出块了 6 个块。矿池,顾名思义,就是聚集一群矿工进行挖矿,因为矿工本身算力有限,只能进行一次挖矿。试想一下,如果矿池的算力集中了全网的51%,那么矿池就完全掌握了比特币网络。

除了上面提到的潜在攻击之外,区块链中潜在的安全漏洞,被发现的和未被发现的,肯定都是存在的。比特币恶意攻击也存在,例如 2017 年 12 月 7 日《卫报》报道的 4,700 多枚比特币被盗。

比特币交易速度。如上所述,只有正式写入区块的交易才能被确认为成功。一个区块的大小是1M,也就是说最多只能记录2000多笔交易。每 10 分钟记录超过 2000 笔交易,这意味着比特币的交易处理速度为每秒 3~7 笔交易,与 VISA 每秒 24,000 笔交易的速度相比是弱的。很多炒作加密电子货币的人说,如果货币真的开始下跌,那就扔掉吧。但是买卖电子货币的延迟可能会相当长。当你的交易真正被区块确认时,比特币的价格可能不是你点击卖出的价格。

挖矿奖励。为了鼓励矿工(没有矿工,交易无法确认),比特币的开发者规定,新区块的产生将奖励矿工一定数量的比特币。 2008 年初是 50 个比特币,每四年减半,现在到 2018 年是 12.5 个比特币。这样,到 2140 年,全球比特币将停止增长。世界上最多将有超过 200 万比特币。 20% 的比特币已经被开采。到 2140 年比特币 区块链技术,仍然会产生新的区块,但新产生的区块不会用新的比特币奖励矿工。矿工有什么赚钱的方法吗?有!矿工可以收取费用。因为每笔交易要等到矿工将交易写入自己的区块后才会正式确认,如果你少付给矿工的手续费,有可能矿工不会把你的交易写进去,所以你的交易需要很长时间才能完成在矿工将您的交易写入之前得到确认。

采矿的疯狂。挖矿的收益还是相当可观的,也正是因为如此,才吸引了很多人成为矿工。挖矿其实很简单,只需购买相应的硬件,下载现成的挖矿软件即可进行挖矿。挖矿最大的开销就是电费,所以很多矿工甚至因为电费便宜而去加拿大和瑞士挖矿。窃电(例如特斯拉充电站、建筑工地电源)也并不少见。根据摩根士丹利的预测,2018年挖矿的用电量将等于2025年全球电动汽车的总用电量。有人不禁要问,光是为了消耗这么多人力资源有意思吗?获得电子货币? (作者吐槽:挖矿让GPU价格暴涨,认真玩游戏的人买不起GPU)

关于比特币/加密货币的思考 作者的主观思考仅供参考 比特币、ICO、区块链是未来的塑造者还是昙花一现的骗局,唯一可以确定的是,有些人会在这方面大赚一笔波,有些人也会在这波中失去一切。

参考资料:

比特币挖掘艰难:算法、协议和字节比特币艰难:使用原始比特币协议比特币:点对点电子现金系统交易速度:加密货币如何与 Visa 或 PayPal 相提并论?