区块链-理论入门

一、背景

        区块链不是一个单独的技术,而是很多技术的综合,区块链应用与比特币中,比特币的诞生离不开“密码朋克”这个组织的功劳。

        密码朋克(Cypherpunk):一个邮件组;组中包含了许多密码天才、计算机精英:维基解密创始人、BT下载的作者、WWW的发明者、智能合作的提出者、Facebook创始人、比特币之父中本聪。

        组中讨论的内容有:数学、计算机技术、加密技术、数字货币。

        密码朋克中一系列技术的铺垫,给了中本聪发明比特币很大的灵感。

        ①Adam Back发明了Hashcash,使用了工作量证明POW,这是比特币的核心要素;

        ②时间戳保证了数字文件安全的协议,这是比特币协议之一;

        ③戴伟发明了B-money,强调点对点交易,不可更改记录,比特币中也采用了点对点交易技术;

        ④哈尔-芬尼推出了“加密现金”;

        由这么技术铺垫,中本聪发布了《比特币:一个点对点的电子现金系统》。

        比特币底层技术:

        区块链-理论入门_第1张图片

        区块链来由:由于比特币系统中数据是一个个区块来存储的,并且通过Hash的方式把一个个区块连接起来,这样就形成了区块链。

二、应用场景

  1. 资产:数字资产发型,支付,交易,结算;
  2. 记账:股权交易,供应链金融,商业积分;
  3. 不可篡改特性应用:众筹,医疗证明,存在性证明;
  4. 点对点特性应用:共享经济,物联网;
  5. 隐私命名特性应用:匿名交易;

三、比特币:

        1、比特币是一种数字货币;

        什么是货币?货币是可以承载价值的一般等价物;

        一般等价物:铜币、金银-->银票-->法币(纸币)

        一般等价物本身,如银票、纸币本身不具有价值,之所以可以作为货币,是因为人们都认可,那么一串数字,是否也可以作为货币呢?这就是数字货币。

       2、 比特币的优势,它的信任从何而来:

        ①财产只受自己控制,不会像银行里的钱一样可能会被冻结;

        ②无通货膨胀风险,比特币总量是2100万个,只会升值;

        ③无假钞,因为需要其他人认可;

        ④流通性好,全球流通,点对点交易;

      3、比特币还是一种去中心化记账系统;

        通常中心化系统把所有数据存在中央服务器,而比特币数据不存在中央服务器,而是将数据存在记账网络中的每一个节点;假设每一个节点相当于一个电脑,那么记账数据会存在每一个人的电脑里,每一个人电脑里都记有账本数据,那么假设有人的账本和其他人不一样,以谁的账本为准呢?这就是涉及到比特币的原理知识,请看后面内容。

        ①账本如何验证?哪一个账本是有效的?

        ②所有权问题?如何来证明谁拥有这个货币?

        ③为什么记账?

        ④以谁的账本为准?(共识机制)

四、账本如何验证?

        有人会说,把所有人的账本拿出来对比,少数服从多数;办法是可以的,但是数据量很大,效率太差。

        Hash哈希函数:Hash(原始信息)--> 摘要信息

        Hash特点:

            ①同样的原始信息用同一个哈希函数总能得到相同的摘要信息;

            ②原始信息任何微小的变化经过哈希函数都会得到“面目全非”的摘要信息;

            ③摘要信息无法逆向推算出原始信息;

        MD5就是一个哈希函数,用来比较文件下载后是否被损坏;

        根据Hash的特性可以验证账本的有效性!

    区块链-理论入门_第2张图片

Hash(原始信息) == 摘要信息

        通过对比摘要信息来验证账本!!!

        区块链-理论入门_第3张图片

        下一次记账如下:


        新的账本Hash之前会将上一个账本的Hash值作为参数加入:这样每次只需要验证最后一个Hash值就可以判断整个链所有账本是否正确。

区块链-理论入门_第4张图片

        账本验证总结:每个节点在核对数据时,只需要核对最后一个区块的摘要信息,如果最后一个区块的摘要信息核对正确,那么说明整个区块链的账本是正确的,这样就可以完成高效的账本验证!

五、账户所有权问题(比特币系统中如何来确定某个账户的比特币是属于谁的?)

        首先来看下中心化系统---银行系统如何确定所有权:

        银行系统:用户(银行卡 + 密码) ---->  交易

        如果有人盗刷了你的银行卡,那如何处理呢?第三方(银行)介入,来验证这笔交易是否是你本人操作,如果不是银行卡所有者操作,则银行会撤销此次交易。

        但是比特币系统是一个点对点交易的去中心化系统,没有第三方参与,那么如何来确保所有权呢???

        1、比特币解决方案:

        在比特币系统中,账号---->用地址来表示,一个地址就是一个账号;一笔交易,其实就是比特币从一个地址转移到另一个地址;在整个交易过程中,不包含任何个人信息;

        区块链-理论入门_第5张图片

        谁能用这个地址进行支付,谁就拥有了这个账户的所有权。

        2、密码 ----> 私钥

        在比特币系统中的私钥,就相当于是银行系统银行卡的密码;

        

        ①比特币中一个地址对应一个私钥;地址和私钥是非对称关系;

        ②通过私钥可以得到地址:

            Hash(Hash(fun( 私钥 )))  ——>  地址

        ③地址无法反推出私钥:

        ④谁拥有了私钥,谁就可以支付;

        那么,在泄漏私钥的情况下,如何证明自己拥有了某个地址的私钥???

        3、非对称加密技术(对交易签名)

        (1)签名过程:

            ①对交易进行hash,得到摘要;

                Hash( 交易信息/转账记录 )  ——>  摘要信息

            ②用私钥对摘要签名;

                Sign( 摘要信息,私钥 )      ——>  签名信息

        (2)广播交易:

        签名之后,付款节点在整个网络中广播,广播的内容包括交易信息、签名信息,让其他节点对此交易进行验证,广播是一个循环的过程,其他节点验证通过后会同时广播给周边节点;

        4、验证:

        其他节点收到广播后,开始验证签名的信息是不是付款方用私钥对摘要进行签名后产生的:

        verfiy( 签名信息,付款方地址 )  ————>  交易摘要

        区块链-理论入门_第6张图片

        5、签名与验证:互为逆运算

        签名是一个加密的过程:sign(摘要信息,私钥) ——> 签名信息

        验证时一个解密的过程:verify(签名信息,付款方地址) ——> 摘要信息

六、为什么记账?工作量证明:

        记账:是一个Hash打包的过程,会消耗大量的资源;

        记账需要消耗资源,那么系统为什么要记账,是因为系统会给参与记账的账户一定的奖励;由于记账具有随机性,因此又称记账为挖矿;

        1、挖矿过程:

        ①每次记账,系统先发行一定数量的比特币到记账账户;

        ②当前每次记账发行12.5个比特币,每个比特币价值>4000RMB;

        ③大家争相记账,如果大家一起记账,就会出现记账不一致问题,因此需要制定规则;

        2、规则:  

        ①一段时间内,只有一人可以记账成功,目前一段时间大约十分钟;

        ②通过解决密码学难题(工作量证明)竞争获得唯一记账权;

        ③其他节点,只是复制上一步的记账结果;

        3、工作量证明:

        ①记账:Hash(上一个Hash值,交易记录集) = 23434WEG3

        ②这样记账太过于简单,人人都可以记账成功;为了保证一段时间内只有一个人可以完成记账:需要提高记账难度,所以比特币要求Hash值必须以N个0开头,目前是18个0开头;

        ③所以引入了随机数,不停的改变随机数,来获取不同的Hash值去匹配符合条件的值;

        Hash(上一个Hash值,交易记录集,随机数) =  0000000000000000002346ffkw324lf23lsfe23f43t3455f

        交易记录集:

            a.收集广播中还没有被记录账本的交易;

            b.交易有效性验证;

            c.添加一笔给自己的转账交易(挖矿奖励);

        4、工作量分析

        区块:Block #512884

        Hash值:0000000000000000002243f4g45g3463sl3424l89fd231583nrkf92i3a3823i98i409o9o32f5rf1wedf6tg

        Hash值以18个0开头,Hash值是十六进制数;  

        那么得到一个0的几率是1/16,理论上需要尝试16次,得到两个0就需要尝试16*16次,那么需要得到一个以18个0开头的数字,理论上就需要尝试1618次;

七、共识机制

        既然记账是有奖励的,那么就会有很多人参与挖矿,就可能出现两个节点同时记账,同时完成工作量证明,那么使用谁的区块呢?为了解决这个问题,所以比特币采用了共识别机制,节点的工作量需要得到其他节点的认同才是有效的。共识机制如下:

        1.如果两个节点同时完成工作量证明,每个节点只认同累计工作量最大的区块链,延长最长链;

区块链-理论入门_第7张图片

        2.分叉解决:广播收到哪个节点,就在哪个节点的链上打包,如果同时出现两条链同样长度,那么两条链相互竞争,总有一条链最终抢先完成工作量证明;

        如上#2345A和#2345B两个节点同时完成工作量证明,这两条链长度相同,这时候#2345A和#2345B两个节点同时向网络中其他节点广播,收到#2345A的节点在#2345A这条链上继续打包,收到#2345B的节点在#2345B这条链上打包,网络传输速度是不同的,那么最后#2345A和#2345B这两条链,最终总有一条超过另一条链,比如#2346B,那么这条链就是有效的;

区块链-理论入门_第8张图片

八、总结

        1、比特币是一个点对点的区中心话系统,没有第三方参与;

        2、账本验证是个问题?所以引入了Hash函数来进行验证账本有效性;每次只需要比对最后一个快的Hash值是否正确即可,如果最后一个块的Hash值正确,那么整条链的账本就正确;

        3、所有权问题?如何确定账户的比特数属于谁?

                签名:Hash(交易信息)——>摘要信息,sign(摘要信息+私钥)——>签名信息

                验证:verify(地址+签名信息)——>判断是否等于Hash(交易信息)

        4、为什么记账?记账消耗资源,可以得到系统奖励

        5、工作量证明:引入随机数,提高记账难度,匹配符合比特币条件的Hash值;

                Hash(上一个Hash值,交易记录集,随机数)==以18个0开头的Hash值

        6、共识机制:每个节点的工作量只有得到其他节点认可才是有效的,每个节点只认可累计工作量最长的那条链;

你可能感兴趣的:(区块链,比特币)