主页 > imtoken客户端app > 打造专属虚拟货币,从学习区块链技术架构开始!

打造专属虚拟货币,从学习区块链技术架构开始!

imtoken客户端app 2023-10-25 05:09:47

比特币算力计算_比特币 哈希碰撞的过程_比特币的计算过程

好了,大家好,我是北风网区块链讲师Navid,今天开始我们的第二讲。 首先,我们简单回顾一下昨天的讲座内容。 上节课我们简单介绍了课程,然后我们讲了区块链的历史和发展,以及我们学习区块链的一些重点。 今天,在此基础上,我们开始讲讲本课程中最重要的内容,区块链的六层模型。

比特币的计算过程_比特币 哈希碰撞的过程_比特币算力计算

昨天上课的部分同学我已经加了微信,昨晚也回复了你们的一些问题。 没加的可以加。 我总结了昨天同学们问的问题:

第一点是如何学习区块链技术。 很多人在第一次接触的时候都会感到困惑和担心。 我也会回答一些问题。 这里再说一遍,展开一下,区块链其实简单但不简单,因为要学的东西很多,可能和学习一般的语言和技术不一样,有时候学习曲线还挺陡的,这是事实。 但是只要我们静下心来,耐心学习,耐心听我讲,把基础知识扎实,我觉得这个东西学起来并不难。 而且我个人觉得还是挺有意思的,尤其是对于有一定编程经验的同学来说,现在学习这个东西还是比较合适的。 我觉得对你来说是一个非常好的学习内容,不管是薪水,还是你自己的思考,还是你未来的发展方向。

二是大家也提到了一些区块链的资料,我在PPT最后一页有。 这里有一些书,我先给大家说说,因为昨天上课的很多同学都谈到了这个问题,就是在刚开始学习的时候有哪些书或者资料对学习有帮助,这里我列举这六种资料。 其实我个人对学习资料的看法是这样的。 书不在于多,而在于精。 如果你说你对区块链完全没有概念,我建议按照我资料的顺序,一个一个的看资料。 这些信息在里面还是有一定的逻辑关系的。

比特币的计算过程_比特币算力计算_比特币 哈希碰撞的过程

首先,我昨天介绍了中本村的比特币白皮书(《点对点电子现金系统》中本聪)。 这是第一个,我认为这是最重要的阅读内容。

第二个是《精通比特币》(“Mastering Bitcoin”Andreas Mantonopoulos

),这也是老外写的一篇非常经典的比特币和区块链概念介绍,主要讲比特币。 比特币可以说是最成功最经典的区块链应用,值得好好看看。 我记得好像是英文版的。 还有中文版,电子版是免费的。 有兴趣的可以找中文版。

第三届《区块链——新经济蓝图》(Melaneie Swan

比特币的计算过程_比特币算力计算_比特币 哈希碰撞的过程

),这是一个更宏观的视角。 看完前两本书,对技术有了一定的了解,再看一些宏观的资料。

然后四(《区块链2.0》陈刚、谭磊

)和五本(《区块链技术指南》邹军、曹寅、刘天喜)主要是几位国内专家写的区块链书籍。 内容包括以太坊和Hyperledger的一些概念和一些应用。 虽然例子不多,但是我觉得学习上手还是没问题的。 有些东西也很深入,大家可以看看。

最后,在前面的资料全部看完的前提下,可以看一下各个平台发布的一些白皮书,比如以太坊的白皮书,以及网上最新的一些白皮书。 当然,您也可以阅读它们。 他们的企业官网,源码,这些都是可以看的。

比特币 哈希碰撞的过程_比特币算力计算_比特币的计算过程

下面是我对相关资料的一些介绍。 下一页是微信公众号。 有兴趣的可以加一些区块链相关的微信公众号。 这些微信公众号可能包含一些最新的信息、动态,甚至一些好的信息。 你可以添加它。 (万向区块链实验室\渡鸦区块链\区块链铅笔区块链\巴比特信息)

关于上一节课的复习和问答,我先说到这里,下面开始今天的内容。

比特币 哈希碰撞的过程_比特币的计算过程_比特币算力计算

今天要讲的内容,我已经说过不止一次了。 这非常非常重要。 我要静下心来慢慢讲,大家也要静下心来慢慢听。 在听的过程中,可能会有一些你听不懂的地方。 没关系。 因为讲完这个我马上讲一个例子。 当我完成这个例子后,我的PPT 中至少会有四十或五十页专门介绍我现在所讲的内容。 但是你要有印象,有概念,然后慢慢会越来越细,越来越多。 其实学习技术就是这样。 你从一个简单的了解开始,然后慢慢的越来越深入,最后到达源代码,或者深入客户,你可以自己直接和客户交流你的想法,这其实就是你知识应用的部分。

比特币的计算过程_比特币算力计算_比特币 哈希碰撞的过程

比特币算力计算_比特币的计算过程_比特币 哈希碰撞的过程

下面简单说一下上节课提到的数据层的部分,再展开。 我讲了区块链的大外部结构。 下面说一下block的内部结构。

比特币的计算过程_比特币算力计算_比特币 哈希碰撞的过程

它由两部分组成,第一部分是区块头,第二部分是区块体,应用称为body。 然后block header包括几个部分,第一部分:previous hash,header中的所有内容都指向上一个block中所有数据的hash值。 当然,区块头中还有很多小结构,比如版本号。 说到先标注颜色我再详细说,这个很重要。 然后是merkle root,可以理解为所有交易记录的哈希值。 后面说到默克尔数的时候,我会详细讲。 现在大家有一个概念和印象,就是有一个地方记录所有的交易记录,一个总的哈希值,它叫做merkle root。

区块体比较简单,最重要的tx就是交易记录。 交易记录的值对应的是merkle根,所以我们可以这样画。 可以理解为deblock header的指针,指向deblock body。 这是可以分为块的两个部分。

比特币的计算过程_比特币算力计算_比特币 哈希碰撞的过程

第二层是通信层,也称为网络层。 网络层比较简单。 它主要使用P2P协议,类似于迅雷和BT。 这些东西有什么特点? 这个功能其实很简单,就是在上传数据的同时下载数据。 那有什么好处呢? 好处是在区块链系统中,随着节点数量的增加,其上升效率越高,下载效率越高,这一点与中心化不同。 如果你是中心化的,你的连接数越多,对网络的带宽要求就越大,可能会导致网络越来越慢。 这个传统被抛弃了,对吧? 现在的区块链网络系统正好相反,只要参与的人越多,速度就会越快。

比特币算力计算_比特币 哈希碰撞的过程_比特币的计算过程

下面,应该说是上层,也就是共识层。 共识的概念可以理解为区块生成的规则。 这个共识我遇到过很多人,尤其是刚接触区块链的人,他们认为所谓的共识就是,比如说你买东西,我十块钱买你的东西,然后我们达成共识,我愿意 如果你付十块钱,你愿意给我值十块钱的东西。 这称为共识。 其实这不是区块链共识! 区块链共识只是指区块生成和数据写入区块的规则。 主流的是pow(工作量证明)。 根据工作量证明,还有pos和dpos算法,后面会详细讲解。 这里我们以 POW 为例。 POW是最常用的,包括比特币和以太坊。 可能过段时间,像以太坊白皮书,大家可以看到分为四个阶段,其中一个阶段是从POW共识算法切换到POS算法,可能是2020年。还有一些像pfbt, sfbt 和卡夫卡。 后三种主要是联盟链或私有链常用的共识算法。 严格来说kafaka不是共识算法。 它只是一种消息通信机制。 不,只是他还与数据的产生和传输有关。

比特币 哈希碰撞的过程_比特币的计算过程_比特币算力计算

还有一点,现在区块链有两种流派,一种就是所谓的币圈,一种就是链圈。 币圈主要是比特币和以太坊的支持者,因为他们手里有币,这些平台都发币。 币圈的人看不起链圈比特币的计算过程,认为自己没有遵守比特币或者以太坊等主流区块链的规范。 而链圈的人肯定更看不起币圈。 他们都认为自己都是炒币的骗子,认为自己的区块链才是真正的区块链技术,所以自称链圈。 我个人的观点是这样的。 这种争论其实意义不大,因为各种区块链技术各有千秋,当然也有各自的不足。 学技术、研究技术的我们要互相学习,取长补短。 看东西,不要总是太偏激,偏向于一种技术或者一种观点,我们应该多学习。 所以从原理上去掌握这些东西,很多东西是很方便理解的。

比特币算力计算_比特币 哈希碰撞的过程_比特币的计算过程

比特币算力计算_比特币的计算过程_比特币 哈希碰撞的过程

那么下面的第四层是什么? 第四层是激励层。 其实他和比特币、以太坊一样,会给参与者(矿工)一些挖矿的机会。 除了挖矿,还有交易手续费。 我将在稍后的示例中详细讨论这一点。 激励层对公链来说尤为重要,是维持公链健康发展的基础。 但是私链和联盟培训,不一定需要激励层,因为他们公司做这个系统,是有一定目的的,他不会让人随便参与这个系统。 因此,激励层一般很少。

比特币 哈希碰撞的过程_比特币的计算过程_比特币算力计算

五是合约层。 合约层的概念是运行在区块链上的程序。 最典型的就是以太坊提出的智能合约概念。 细分可以分为两种,一种是图灵完备的,一种是非图灵完备的。

这很难理解。 定义就是凡是可以计算的都可以计算,这就叫图灵完备性。 举个简单的例子,大家都写过一个程序,比如for循环,递归,while,如果包含这些语法,那一定是图灵完备的,为什么呢? 因为包括这些文法,一般可以实现死循环,可能具备图灵完备的能力。 你为什么这么说? 事实上,图灵完备到底是什么意思? 它是指计算一切可以计算的东西。 什么是可以计算的一切? 这是一个科学计算的概念。 在科学计算中,有一些积分和导数。 这些都需要不断逼近和无限循环才能得出答案,达到科学精度的要求。 它将进行一些迭代计算,我们将其定义为图灵完备。 相反,有些东西就是做不到这个功能,只能运行几次,或者语法上做不到,这就叫非图灵完备。

图灵完备的典型代表是以太坊的智能合约。 非图灵完备性的代表就是比特币的脚本。 比特币实际上是可编程的。 比如比特币的多重签名支付是可编程的,但是这个东西不能无限循环,但是支持以太坊,虽然不是很强,但是理论上是支持的,所以叫图灵完备。

但是图灵完备就一定好吗? 其实不一定如此。 科学总是辩证的,对吧? 你好像功能强大,功能强大,潜在漏洞比较多。 比如以太坊出现过几次分叉,都与自身智能合约的复杂性有关。 同时,如果图灵完备,如果能够不断迭代,可能会给以太坊整个网络带来很大的压力。 因此,为了解决这个问题,以太坊提出了猜测的概念。 你可以跑,但是你要消耗猜测,也就是你需要消耗以太币。 如果一直循环下去,那么肯定会把以太归零。 只能停下来。 这样一来,一方面是消费以太坊的一种方式,另一方面也是为了保证自身网络的安全。

比特币的计算过程_比特币算力计算_比特币 哈希碰撞的过程

第六层是应用层,是指运行在区块链系统上的程序。 这和合约层有什么区别? 一种是直接运行在区块链上,一种是运行在区块链系统上。 这有点不同。 比如说你调用区块链系统上的一个接口,包括智能合约上的一个接口,我们称之为这个区块链的一个应用层,然后你直接调用某个区块。 可以说应用层调整合约层,合约层调整区块链的一些底层数据,就是这样一个逻辑关系。

那么最典型的应用层有两种,一种是钱包。 说到钱包,我再说一件事。 比如你在火币网下载了一个钱包,这不能算是区块链上的一个应用,因为火币网下载了钱包。 本质上,您已连接到 Huobi.com 服务器。 这不是区块链的事情。 可能火币网会调整区块链,所以不能算是区块链钱包的分布式接入。 因为你是一个中心化系统,你经常听到一些交易所被盗的消息。 这是中心化系统的问题,而不是区块链本身的问题。 但是有一种情况是直接连接到区块链系统的,比如imtoken,你以前可能没有用过,但是你也可以下载使用。 这是一个区块链钱包。 这两个钱包是不同的。 比如你用火币钱包,如果火币被政府倒掉或者关停,那么你的数字货币可能就没了。 但是如果你使用imtoken,它是直接在区块链系统上的。 只要这个系统还在,钱包里的虚拟货币就一直在。 另外,如果说一些黑客,肯定会用区块链钱包,不会用币网钱包。 因为要在火币网注册,很多人都不愿意把自己的信息透露给中信,所以他选择了那种分布式钱包,保证密不透风。

比特币 哈希碰撞的过程_比特币的计算过程_比特币算力计算

还有一个区块浏览器,里面记录了区块链的一些状态,比如生成的区块号,各种参数,交易记录等,都可以通过区块浏览器看到。 这是区块链应用程序的另一个示例。 当然,有可能一些区块浏览器数据来自中心化服务器,或者中立服务器有一些缓存。 这不一定是完全基于区块链的,所以让我们稍微了解一下。

比特币的计算过程_比特币算力计算_比特币 哈希碰撞的过程

那么,说完这些概念,很多同学可能会有点懵,或者有点晕。 他们大概都懂,只是不知道为什么要讲那么多这么细的东西。 没关系,下面大家就知道了,为什么要讲这个,我就举一个实际的案例来理清这六层数据之间的关系。

用户A转一枚比特币给用户B,这是一个简单的动作,也是一笔交易记录。 通过这次交易,我们将详细讲述区块链中的故事。

比特币算力计算_比特币的计算过程_比特币 哈希碰撞的过程

我们先做一个背景介绍。 用户A有十个比特币,用户B有五个比特币,矿工C有一百个比特币。 矿工和普通用户有什么区别? 矿工除了是普通用户,还可以挖矿。 有一个挖矿的概念。 很多朋友可能不了解挖矿,什么是挖矿? 挖矿是如何进行的? 让我在这里向您解释一下。

比特币算力计算_比特币的计算过程_比特币 哈希碰撞的过程

其实一句话,挖矿就是计算一个系统需要的哈希值。 这里面有两点,一是“计算”,二是“系统需要的哈希值”。 好吧,我们先说计算,它是怎么计算的? 一般情况下,使用hash算法,然后这里的输入(Input)-nouce,这个nouce会一直增加。 那么这个函数——sha256,当然各个block可能会有一些细微的差别。 然后输出就是结果(Output)-sha256(nouce),也就是计算过程。 然后是系统需要的哈希。 系统要求是什么? 也就是说,在系统中,他会要求每个参与的节点计算一个hash。 例如,系统要求使用函数-sha256来计算前五位为零的哈希值。 经过计算,我认为你挖了一个矿,我给你12.5个比特币。 就是这样一个逻辑。 那么计算过程是怎样的呢? 首先打个比方,初始nouce是100,然后我通过哈希函数sha256算出来,但是可能只有三个0。 大家都知道这个哈希值是非常非常随机的。 没有人能确定它前面的零的随机数。 那么第一次计算可能会很不吉利。 它前面只有三个零,所以我们还要继续计算。 第二次nouce变成101,第一次是系统给你提供的,大家都一样,后面是根据你的计算能力,计算的越快,计算的次数越多。 比如你数一百二百零三,我在简化流程。 其实可能比这个更复杂,但总的原理是这样的。 可能要计算10000次,或者100000次。 ,其实并没有那么少,所以当有满足我要求的时候有100万或者几百万,那时候系统会给你12.5个比特币,这就是挖矿的过程。 那么你可能会想,这对每个人都公平吗? 为了什么? 因为当时每台机器的初始值都是一样的,你数得越快,你要尝试的机会就越多。 如果两台电脑一台快,一台慢,快的可能已经算了,慢的可能还没算,那他就没办法拿到系统的奖励了。 简单了解一下这个挖矿。

比特币的计算过程_比特币 哈希碰撞的过程_比特币算力计算

然后系统中有一个节点。 节点的概念是:一台参与区块链系统计算的计算机。 假设有节点(计算机)JA、JB 和 JC。 JA为用户UA使用,JB为用户UB使用,JC为用户UB使用。 矿机KC在用,JC的性能可能会好很多。 当然,还有很多其他节点参与计算。 然后先说数据层,UA转1比特币给UB,我们称之为tx(交易记录),然后通过网络层数据广播,tx发送给JB,JB再发送给JC,再通过共识层决定是否将tx写入区块链,这里的共识层是一套算法验证机制,只有符合它的其他验证机制和它的逻辑原则之一,才能写入区块链。 比如时间戳是不是有问题之类的,我记得比特币只有十几、几十个。 看完源码,有几十个非常多的计算。 然后我这里又画了一个区块,比如100号区块,然后它把tx交易记录写入这个区块,验证通过后写入。

比特币 哈希碰撞的过程_比特币的计算过程_比特币算力计算

比特币的计算过程_比特币 哈希碰撞的过程_比特币算力计算

至此,一个简单的交易就完成了,但是这样的系统确实有一个很致命的问题,是什么? 因为你的交易只是A和B之间的,跟我C有什么关系,和我D、F和其他人有什么关系,我为什么要传给你,我为什么要验证你,对吗? 为什么我也要参与这个共识对吧? 毕竟人类不是活雷锋吧? 大家一定有兴趣去做这件事,所以在设计区块链的时候就设计了一个激励层。 在挖矿的同时,参与tx交易记录的验证。 如果矿工够幸运,够本事,挖到盒子比特币的计算过程,系统就会给他12.5个比特币。 这个比特币将被写入区块的第一项。 在交易记录中,我们称之为coinbase。 这是比特币区块链中的另一个概念,是什么意思呢? 也就是说,区块链系统中所有的币都来自于挖矿。

比特币算力计算_比特币 哈希碰撞的过程_比特币的计算过程

交易只会有币的流通,不会产生新的币,只能通过挖矿产生。 但是这里还有一个问题。 比特币的数量是固定的。 每个人都知道大约是2100万。 既然总有一天会被挖出来,那这个时候系统会用什么来激励它呢? ? 这时,比特币设计者考虑了另一种激励机制,称为交易费用。 比如A转一个比特币给B,B收到的肯定不是比特币,而是0.999,还会扣除一些交易手续费,但是交易手续费给了谁呢? 或者给矿工。 就这样,哪天挖完了,大家还有参与的热情。

比特币的计算过程_比特币算力计算_比特币 哈希碰撞的过程

这样,系统就比较完整了。 这里我们讲四层,数据层、网络层、共识层、激励层和整个交易的关系。 不知道你懂不懂,不懂也没关系。 下课我把这个发给大家,大家可以自己去了解和琢磨。 确实不仅仅是计算机知识,还有设计师对人性的理解,非常好。 让各类矿工参与到系统中,并给予一定的激励,我认为是这个系统最强大、最吸引人的地方。

做系统不是为了做系统而做系统,而是让更多的人使用,使用的人自愿维护这个系统,不需要任何第三方的中心化系统维护它。 这是一件非常非常棒的事情。 而且经过这么多年的修炼,一个都破不了。 这是我认为这个系统最吸引人的地方。

今天的内容就是这些。 下一节课,我会在此基础上讲一些更深层次的概念,帮助大家理解。 在接下来的几节课中,我将在PPT中详细解释每一层,然后使用示例或代码。 等形式让大家更深入的了解。 还有很多要讲的,比如如何管理挖矿账户,如何管理比特币区块链系统账户,如何验证他们的一些数据,还有一些原理和公式,下面会逐步讲解迈向未来。

希望本课对大家有所帮助。

谢谢你们!

区块链课程正在进行中

搜索公众号“北风网”并关注

您可以免费试用