美文网首页
区块链技术核心概念与原理讲解(笔记 - 2)

区块链技术核心概念与原理讲解(笔记 - 2)

作者: ceido | 来源:发表于2018-09-02 14:25 被阅读0次

    前言

    我不时有一种状态,就是翻遍了所有课程、书籍,就是不知道要做学什么好,像只无头苍蝇。每当有这种感觉的时候,我告诉自己学什么都好过什么都没学,以此破局。

    此笔记记录学习慕课网视频:区块链技术核心概念与原理讲解,一直不理解区块链到底是什么,看了这个视频才有了一个认识,建议和视频一起看。

    下面部分是比特币原理的剩余三个小节:

    2.账户所有权问题?

    怎么确定一个比特币是属于谁的?首先还是看看现实中操作:平时我们在刷卡的时候,会需要两样东西:银行卡和银行卡密码。如果银行卡与密码与系统存储的结果对上了,就可以消费了。如果你的银行卡和密码都给盗了,盗贼使用你的卡进行消费。我们还可以通过银行和警察叔叔的协助,确定是盗贼使用了你的卡。

    但是在比特币系统中:交易是点对点的,没有银行等第三方。


    image.png

    在比特币系统中,比特币账户是一个地址,谁能用这个地址进行交易,谁就拥有这个账户的所有权。

    注意:地址和私钥是非对称的关系,私钥经过一系列Hash运算后得到地址。

    image.png

    由上可知,私钥和账户有着绝对确定的直接对应关系,而不能像银行卡那样再修改密码了。谁拥有了私钥,就相当于谁就拥有了这个账户,谁就可以用这个地址进行交易。所以私钥超重要,如果私钥泄露了,比特币就可能丢失。

    所以所有权的问题就变成了在不泄露私钥的情况下,证明自己拥有某个地址的私钥。(也就是验证私钥的正确性就行了)。

    (这里我是这样理解的:要想证明自己拥有私钥,就要得到别人的验证,一种方法就是:你直接把密码告诉别人,就好像你把银行密码直接告诉别人,然后说:“你看吧,这个是正确的密码,不信你输入看看,可以取款的,没骗你吧。”
    当然,这是傻子才会做的事。有没有不告诉别人密码,然后又可以验证的方法呢?)

    这里就用到了非对称加密技术(交易签名)

    • 交易进行hash得到交易摘要
    • 用私钥对摘要进行签名
    签名过程:

    首先是对原始交易信息进行hash,生成交易摘要,然后再用交易摘要和私钥进行一个签名运算。


    image.png

    在签名运算之后,该节点会在整个网络进行广播:广播内容为原始的交易信息(包含付款方地址)和签名信息。

    image.png

    而接收到的节点又会以同样的方法进行广播,以致传递到所有节点(就像洪泛法??)

    验证过程:

    用签名和付款方的地址进行一个验证的运算,如果结果是原始交易信息的摘要(hash值),那么说明这笔交易就是私钥所有者发出的,验证通过。这时候就会把交易的信息写入到账本。然后再次进行广播

    image.png

    可以看出,签名和验证是个相反的运算,签名是个加密的过程,验证是个解密的过程。我发现,原来这个付款方地址就是公钥嘛!!(视频后面也说了)这样就不用把私钥告诉别人,而是用公钥就可以验证私钥的正确性了。

                   签名运算
    交易摘要 + 私钥 ===> 签名
    
                   验证运算
    签名 + 付款方地址 ===> 交易摘要
    
    image.png

    视频后面补充了:关于隐私和安全,不打出来了。

    3.为什么记账(挖矿)?

    记账:Hash打包过程。在比特币的设计中,完成记账是可以获得一定比特币奖励的,所以大家将记账形象的叫做——挖矿,这个奖励其实就是比特币发行的过程。

    规则:

    • 一段时间内只有一人可以记账成功(10分钟)
    • 通过解决密码学难题(即工作量证明)来竞争获得唯一的记账权
    • 其他节点只能复制记账结果了

    之前说到,记账过程就是如下:


    image.png

    如果只是这样的运算,那么每个人都可以轻松完成,而要保证一段时间内只能有一个人记账成功,就必须要故意大大提高计算的难度。

    比特币规定这个计算结果要满足以若干个0开头的要求。

    image.png

    这时在计算hash时,就要引入一个随机数变量,不断的去改变随机数,每个都可以得到一个新的hash值,直到找一个符合以若干个0开头的hash值。我们现在的电脑要找出4个0开头的hash,一般需要1、2分钟的时间。

    比特币因为现在很多人参与挖矿,算力很强大,所以将挖矿的难度设为以18个0开头。第一找到这个hash的,就可以获得交易记录集,这个交易记录集就可以这样用:

    • 收集广播中还没有被记录账本的交易
    • 交易的有效性验证
    • 添加一笔给自己转账的交易(挖矿奖励)

    这个交易记录集可以理解为通关奖励的宝箱,当然我们要的就是后面那个啦。

    image.png

    18个0的计算量是非常巨大的,要非常强大的设备与消耗巨大的电力(之前听说一些矿工跑到贵州等电费较低的地区挖矿,原来是这个原因,感觉这种故意要消耗巨大算力的设定很浪费啊,最终只有一人能挖到矿。机器没日没夜的跑,其他没能挖到的所有的投入都白费了,陪跑一样)。

    所以现在已经没有独立的矿工进行挖矿了,因为几十年也可能挖不出一个。

    而且随着越来越多的人投入挖矿,那么计算难度必然又将加大。成本也将越来越高。最终这样作用下去,成本甚至是接近收益的。

    4.共识机制(这里听得不太清楚,有时间再补充了)

    如果两个节点同时完成工作量证明,使用谁的区块?无仲裁机构裁决,而且都说用我的区块。

    为什么要遵守协议:节点工作量只有在其他的节点认同其是有效的。

    image.png image.png image.png

    后记

    最后,我还看了一套用GO语言构建自己的区块链,这个视频用go实现了一个区块链的结构吧,个人觉得算是代码的简单实现。
    关于比特币余额的问题:http://web.jobbole.com/94322/
    JS实现区块链:http://web.jobbole.com/94322/

    相关文章

      网友评论

          本文标题:区块链技术核心概念与原理讲解(笔记 - 2)

          本文链接:https://www.haomeiwen.com/subject/juaswftx.html