前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何理解区块链的运行原理?

如何理解区块链的运行原理?

原创
作者头像
雨夜的博客
发布2022-06-13 19:20:04
1K0
发布2022-06-13 19:20:04
举报
文章被收录于专栏:算法的秘密算法的秘密

上文,我们介绍了区块链的概念,今天就稍微深入一下,尽可能通俗地介绍一下:区块链的运行原理?

通过上文的小故事,我们知道了区块链的概念,它的本质就是解决信任问题,降低信任成本的技术方案,目的就是为了去中心化,去信用中介。

区块链是比特币的底层技术。比特币的概念最初由中本聪在2009年提出,它就是数字货币,海外也被称为法币。

首先,我们借鉴了一个区块链描述中的经典情景来模拟中心化记账。

假设武当派是一个由百户徒弟的门派,其中张三丰是武当派的掌门,掌门的大徒弟是宋远桥。徒弟们都把钱存到武当派哪里,张三丰负责记账。比如,张翠山用1000买了殷梨亭家的牛,张三丰就把张翠山名下的存款减去1000,殷梨亭加上1000。听起来是不是很想银行的操作呢?

就是要从中心化的银行记账开始聊起。徒弟们都相信张三丰,才愿意把钱存到张三丰的门派,它们相信张三丰不会做恶。

可惜好景不长,张三丰年纪太大了,卸任了掌门人位置。新上任的掌门宋远桥也是很正直和聪明的人,但也有个毛病,就是粗心大意。他不但经常算错帐,一次还被偷改了账单。

不过,幸好徒弟们自己都有记账,但是由于宋远桥每次错帐后都要和别人合队半天,导致村民对新掌门的记账能力十分不满。

时间就这么过去,然而最可怕的事情还是发生了,宋远桥的儿子宋青书竟然私下篡改账本,给宋远桥的亲人的余额全部偷偷加了好多,终于有一天事情暴露,徒弟们气冲冲地跑到宋远桥哪里逃说法,于是武当乱成一团,被赵敏偷袭了。

如果这个时候使用比特币的思路来解决这个问题,应该如何解决呢?

公开记账

  1. 每个徒弟都派发一只信鸽。这就是 P2P 网络,是一个点对点的分布式网络。
  2. 每个徒弟都发一个特殊的印章和一个扫描器。这个扫描器有两个功效,一是识别他人的交易是否真实有效,二是识别这个交易是不是自己账号的,同时识别并解锁未花费的余额。这就是非对称加密。
  3. 每个徒弟都可以参与记账,不过不再记余额,而是记交易本身的内容。这就是区块链中的交易,这个“交易”对应的英文单词是“Transaction”,这是个专有名词,专指一笔账,不同于金融交易的 Trade。

这三条总体来说其实是干一件事情,就是:

每家每户都记账,账簿上不再记载每户村民的余额,而只记载每一笔 Transaction,即记载每一笔交易的付款人、收款人和付款金额。

那么问题就来了:如果每个徒弟都记账,肯定徒弟们的账都不统一啊,你记你的,我记我的,最后不全乱了么?

这个时候需要大家统一账本,保证大家的账本都是一致的。因为记录的交易是门派所有人有序产生的,所以这就需要有一个广播机制。

其实很简单,我们现在先把门派所有人的资产都加起来。还真巧了,刚好 100 万。

只要账簿的初始状态确定,并且每一笔交易可靠并按照物理时间自然记录,并且只加不改不删,这样,当前每户持有多少资产是可以推算出来的。

第一块是一个可以识别的标记,比如我往纸上一敲,可识别的标记是 1MsTg2。

这就是你们的代号,由于我们账本是公开的,使用真实姓名会很危险,所以你们记账的交易单上收款人、付款人都填这个码,不用写姓名。你的扫描器和你的印章生成的代号是关联的,有且仅有持有对应扫描器的人才能花费金额,这一步即为“解开交易”。

刚刚说印章有两块,这第二块内容配合这个扫描器才能看,肉眼看则都是乱码,扫描器一扫就知道第二块内容是否有效,这一步也就是“交易验证”。

并且所有交易大家都能接收,都能看到,但却解不开印章乱码部分的内容,仅仅收款方才能解开,因为你的扫描器和你印章生成的代号是关联的,有且仅有持有对应扫描器的人才能解开交易。

创建创世区块

创世区块是我们生成门派公开账本的第一笔交易的第一个信封,好比一篇文章总得有个开头一样。

于是乎,某个徒弟先生成第一个 Transaction,这个交易单的付款人为空,收款人是宋远桥,付款金额是 100 万,因为是创世区块,产出多少个是可以随意规定的,由于我们上面统计了全门派的账目情况,所以就写了 100 万,待会儿付款给掌门以后,我们可以按照原来的账本给大家发送对应的金额过去。 好了,我们有了第一笔交易,第一个信封也已经做好了。现在让掌门把信封传给张翠山,张翠山复印一份,然后传给殷梨亭,殷梨亭继续传下去,一传十,十传百,直到传给整个门派,这个步骤也就是“同步区块”,也就是全网都拿到这个信封,以及信封里面的 Transaction。

交易

由于我们的创世区块把 100 万交给了掌门,那么我们假设张翠山在掌门那里的存款余额是 10 万,这时候掌门要根据原来的旧账本,把这 10 万发送给张翠山,然后把旧账本上的账划掉。下面我们讨论一下如何构造这笔交易。 把 100 万分成两部分,第一部分 10 万,收款人是张翠上;第二部分是 90 万,收款人是自己;这样一个 Transaction 就做成啦。

前面我们说了,不能直接写名字,要写代号,这个代号也就是你的钱包地址,我们需要把收款人写名字的地方,让收款人拿出自己印章,把代号读出来,然后告诉掌门即可。?

掌门写好 Transaction 以后,还需要拿出自己的印章,在 Transaction 上盖章,这个盖章的过程也就相当于区块链中的签名。这个章,门派的所有人都可以拿扫描器扫一下验证是否有效,即验证付款人的章是否有效。?

就这样,掌门一共写了 10 份 Transaction,分别代表了发送给不同人的交易,张翠山一笔 10 万,殷梨亭一笔 1 万,等等。

打包 Transaction (挖矿)

现在我们有了 Transaction,但是还需要东西把 Transaction 装起来,我们用一个特殊的信封把 Transaction 装起来,这个信封就是区块链中的“区块”,这个封装过程就是“打包交易”。

为什么要封装起来呢?是为了让打包交易的人能够在信封上署名,表示这次打包是由某某某打包的,其次全村的交易可能非常多,需要装配标号,方便大家查询。

我们看到上述的 Transaction 虽然已经生成,但是有个问题,就是没有规定谁有权利把 Transaction 封装到信封里。

由于我们门派的人口增长,100 万未来可能不够,我们暂定 150 万,那多余的 50 万,我们就当奖励给这些装信封的人了,当然不能一次性给,谁装一次信封就领 3 个币。

这时候大家伙儿来劲了呀,只要装信封就能够领钱了,我们在这里把符合条件的人称作“矿工”。

要获得这个装信封的权利,是有条件的。我给大家出一个难题,谁先解出这个难题的答案,谁就有权利把 Transaction 装到一个信封中,并且要在此信封上盖上自己的章。

好了,这时候大家开始计算给出的难题,刚好张翠山第一个计算出来,那么这次装信封的操作就由张翠山完成,张翠山把 10 份 Transaction 装到信封中,也就是打包 Transaction,并且要在信封背面写上一个信封的摘要信息。

比如上一个信封中的第一个交易是什么、信封封面长什么样,最后要在信封上盖上章,也就是“签名”,矿工签名的目的是为了领币,也就是 Coinbase 交易。

以上过程在区块链领域称作“打包 Transaction”,也就是大名鼎鼎的“挖矿”。

广播交易

来说说上文提到的广播交易,广播是为了让所有人知道当前时刻你产生了一笔 Transaction,或者是你装好了一个信封。

广播的内容分两种,一种是广播 Transaction,一种是广播信封。第一种广播是意味着还有未被打包的 Transaction,而第二种广播信封则意味着这个 Transaction 已经被某个矿工确认。

收到了广播的通知后,大家先验证信封上难题的答案是否正确,这样便可以验证出信封是否被伪造,接着验里面的每笔交易,最后还要验证信封背面的内容,即上一个信封的摘要是否正确。因为上一个信封大家都已经确认,所以这样可以极大地规避作弊的可能。如果觉得没问题,就可以存入本地数据库中了。

双花问题

如果两个弟子同时上传,虽然这个概率很小,但是若发生,我们就看最后的区块链哪条更长,短的那条就失效。这就是区块链中的**“双花问题”**(同一笔钱花两次)。

对于要制作虚假交易,除非你说服了全网里超过51%的矿工都更改某一笔账目,否则你的篡改都是无效的。 网络中参与人数越多,实现造假可能性越低。这也是集体维护和监督的优越性,伪造成本最大化。说服51%的人造假还是灰常灰常难的。

总结

通过今天的武侠故事聊了比特币区块链,其中包括区块链中公开记账、创建创世区块、交易、打包 Transaction、广播交易的几个步骤。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 公开记账
  • 创建创世区块
  • 交易
  • 打包 Transaction (挖矿)
  • 广播交易
  • 双花问题
  • 总结
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com