比特币的工作原理 how does bitcoin work?(最容易理解的区块链系列视频)

Описание к видео 比特币的工作原理 how does bitcoin work?(最容易理解的区块链系列视频)

我是比特范,
我的微信微博ID:bitefan123
我的微信公众号:bitefan123
最容易理解的比特币区块链系列视频持续更新中,
欢迎大家观看,留言并转发。
此视频链接:   • 比特币的工作原理 how does bitcoin work?(最容易理解...  
此视频字幕:
hello,大家好,我是比特范,我的微信微博id都是比特范全拼加123.
在上一个视频中我们解释了比特币记账系统和银行记账系统不一样,银行记账系统的账面最终体现是每个账户的余额数字,而比特币系统记录的是一条一条的相互关联的转账信息,你在比特币系统上的资产表现就是某某地址转给你的没有花费的比特币信息。比如类似“a向b转账100个比特币”这条信息就是b在比特币系统中被记录的资产。
但比特币系统是一个分布式的对等网络,没有中心记账机构,不存在账户的概念,那这样的账目信息是怎么被记录的呢?
现实中一张欠条写明“张三欠李四100块钱”,只要张三在这张欠条上签上他的名字,张三欠李四100块钱张三就无法抵赖。这是因为现实世界中每一笔账目往来的手写签名有两层意义,第一,每一个签名都是独一无二的,是可鉴别的;第二,每一个签名都对应特定的账目,也就是说一个签名就可以锁死一笔特定的交易。在比特币系统中也类似,a向b转账100个比特币这条信息只要加上a在网络上有个类似现实世界中的签名,那么由a签发的转出100个比特币就被认为是有效的。
可是,因为在计算机上任何信息都可以被复制,包括签名,那比特币系统是怎么解决这个类似现实世界中的签名问题的呢?
为了说明这个问题啊,我们得先引入两个概念,第一,哈希算法;第二、非对称加密;
比特币系统采用的哈希算法是一种叫做sha-256的算法,sha-256是一种函数。这个函数无论你输入什么值,都有且只能得到一个对应的256位的二进制数,比如我们输入”a向b转账100个比特币”这条信息,就会得到一串特定的256位的二进制数,这些二进制数就叫做哈希值,但是只要我们输入的值发生任何一点点改变,比如将”a向b转账100个比特币”这条信息改为“a向b转账101个比特币”,得到的256位二进制数就完全面目全非了,也就是说每一个哈希值都对应着一个输入,输入值哪怕多一个空格键或者标点符号得到的哈希值都不一样,并且这个变化完全没有规律可循。
说完了哈希算法,我们再来说非对称加密,非对称加密是相对于对称加密而言的,对称加密就是加密和解密用的密钥是相同的,比如你是一个含蓄的人,你想给你女朋友发送一段信息:5201314(明文),但是你又怕这段信息被别人看见,于是你把这串数字每一位加1得到6312425后再给到她,然后你再悄悄的告诉她每一位数都减1就可以理解你想对她说的内容了,这里,加密和解密都是用密码1,这就是对称加密。而非对称加密是加密和解密用的是不同的密钥,用非对称加密一般普通人常见的就两种应用,第一种是用公钥加密,然后用私钥解密,比如你给你朋友发一封电子邮件,这时候你朋友的邮箱地址可看做她的公钥,她登录邮箱的密码就可看做是她的私钥。另一种是用私钥加密,然后用公钥解密,常见的用途就是数字签名。
现在我们就来解释比特币系统里的转账信息是怎么利用数字签名来达到被其他节点验证的效果的。a要向b转账100个比特币,a先按比特币系统要求的格式制作一条转账信息“a向b转账100个比特币”,并将这条信息进行哈希运算得到一个特定的哈希值,a用自己的私钥对这个哈希值进行加密得到a的签名。然后呢,a将自己制做的转账信息“a向b转账100个比特币”、自己的公钥以及自己的签名发送·给其他参与记账的节点,任何节点都可以用a的公钥对签名进行解密,我们将解密后得到哈希值称作哈希值1,然后再将a制作的转账信息输入sha-256函数得到哈希值2,假如哈希值1=哈希值2,那就说明:1.这个签名是针对这条信息的;2.这个签名是a签发的;3.节点接收到的转账信息与签发的信息相同,说明信息没有被篡改。
除此之外,参与记账的节点还要验证a是否有足够用于转出的比特币,记账节点通过检索a的地址中是否有合计大于100个未花费的比特币。我们现在假设,可以检索到现有账本中有关a的地址有两条最新的状态,一条是,c向a转账70个比特币,另一条是,d向a转账40个比特币,70+40大于100,那么就说明a满足转账的余额条件,然后将这两条转入信息作为输入条件,输出新的状态:a向b转账100个比特币,a向a转账10个比特币,这个a向自己地址转账的这条信息就是找零,当然这个地址也可以是重新生成的一个地址。
现在每一条转账信息是怎么被验证的已经解决,那这些转账信息是怎么被记录在这个对等网络中的呢。比特币系统采用的是区块链的办法。
区块链是由一个个相互关联的区块按先后顺序链接而成的,每一个区块中都包含有一个特点时间内网络中发起的需要被记录的转账信息,这些区块是由矿工生成的,矿工创建新的区块的过程就是挖矿,新的区块产生以后,每个节点都将新的区块陆续添加到这个区块链的后边就可以了,整个比特币系统中每一个节点记录的都是一条相同的区块链,这里所谓的矿工,就是我们之前提到的参与记账的节点,但是参与记账的矿工很多,每个矿工都在制作区块,那到底以谁制作的为准呢?
比特币系统设置了一套解决办法,在10分钟左右的时间内,每个矿工都将自己接收到的所有的转账信息验证并整理成为一个新的数据,然后立即生成一个时间文件,这就相当于给这个新的数据盖上一个时间戳,然后再加上一个之前区块的哈希值,再附上一个随机数整合成为一个新的准区块。再将这个新的准区块进行sha-256的哈希运算,系统设置要求这个哈希值必须满足某个条件,比如,前80个二进制数都是0,前面我们讲了,sha-256是一个随机函数,任何输入都会得到一个特定的256位的二进制数,现在每个节点制作的新的准区块除了附加的随机数之外,都是确定的值,所以要满足256位的哈希值前80位数是零,只有改变随机数一个一个的去试,直到找到满足要求的这个随机数。这个过程是没有办法优化计算的,只能傻傻的一次一次的改变随机数去试。但是这却是一道很难的题,每试一次成功找到这个随机数的概率仅有2的80次方分之一,并且有意思的是,比特币系统设置的是平均每10分钟左右生成一个新的区块,假如生成这个区块的平均时间太快了,系统就自动调整找到随机数的难度,比如将规则改变为找到满足哈希值前81个是零的随机数。假如生成区块的平均时间大于10分钟了,系统就自动降低难度,将哈希值的前80个为零改为前79位为零。只要有矿工率先找到了满足要求的这个随机数,它就立即把自己之前整理的准区块广播给其他的矿工,其他矿工输入sha-256函数校验的确满足系统规定的要求,于是就放弃自己之前整理区块,转而将接收到的准区块附在自己记录的区块链的后面,这样,这个胜出节点的准区块中记录的所有交易信息就都被记录在其他节点上了,新的区块诞生,也就是说转账信息被确认了。
那这些矿工为什么愿意来参与竞争记账呢。因为比特币系统规定,每一个创造新区块的矿工都可以得到两项奖励,第一项是系统给予的奖励,比特币系统一开始是每创造一个区块给予50个比特币的奖励,往后每21万个区块奖励减半,直到2140年奖励结束。比特币系统中比特币的数量总计是2100万枚,这项奖励结束以后矿工们只能得到第二项奖励了,第二项奖励是矿工所创建的区块中所有转账请求附带的转账手续费。比特币系统中一个区块的容量大小只有1m,就像现实世界中账本的一页纸张一样,能记录的账目信息是有限的,矿工在整理网络中的转账请求的时候都是按照每个转账请求给予的手续费的多少来排序的,假设,一个区块只可以记录100条交易信息,但现在网络中有120条等待被确认的交易,手续费给得最少的20笔交易就只有继续等待了。比特币系统矿工制作新区块得到奖励的过程,就是比特币中货币发行的过程。这是一个非常巧妙的设计。
这就是比特币系统大概的工作原理,今天视频就先到这里,下一个视频再给大家讲一讲假如你想要拥有比特币,到底应该怎么来操作。感兴趣的朋友可以加我个人微信,我朋友圈也会经常发一下比特币及区块链相关的东西,谢谢大家,再见。

Комментарии

Информация по комментариям в разработке