免责声明:金色财经所有资讯仅代表作者个人观点,不构成任何投资理财建议。请确保访问网址为(jinse.cn) 举报

    什么是区块链,娓娓道来(4)

    承接前一篇,目前是系列的第四篇。

    什么是区块链,娓娓道来(4)

    六、比特币——账本而已

    这里必须要明确指出,在比特币世界里是没有实体存在,没有那种类似于钞票这种实体的存在,有人在网页看到了比特币的样子、跟金币似的,那是忽悠人的。比特币——无影无形,我们可以将之想象一个账本,系统里每个节点都有的账本。这个账本记录了从创世到现在的转账记录而已,你的所谓财富其实就是每个条目一条一条的累计。账本的第一条是:创世区块,比特币系统转账给中本聪50btc。你说中本聪收到任何实体的money了吗?完全没有!但是在比特币系统里,中本聪已经在账目上拥有了50个比特币,以后中本聪想要给别人转账,他就可以援引一下这条交易记录,证明自己接受过50个比特币,然后再写一条交易记录要把这个转给谁。明白了吗?整个比特币系统就是一个账本,没有任何实体支撑。

    就好比小朋友之间拿一个本子写上Alice给Bob5枚可爱币,Bob给Alice玩一会游戏机。明天Bob又写上我付给Alice5枚可爱币,借她漫画书看一看。这中间没有任何所谓的可爱币,但是Alice和Bob煞有介事的写在账本上,而且二人都当真的时候,这可爱币就成真了。比如我们假设Bob账目上富裕5个可爱币,有一天Bob看上了同桌Tom的一根棒棒糖,但是Bob并没有现金支付。他就对Tom说,能不能把这根棒棒糖给我,我在小本子上给你记账5个可爱币。Tom说你有病吧?你拿个本子神叨叨的给我记录一下我就给你糖吃?Bob说,你别看这记一下,这条记录表明你就拥有了我的五个可爱币,你可以去找Alice借漫画游戏机,不信你去试试。Tom将信将疑的答应了,随后带着小本子去找Alice,在上面记录一条Tom转账5可爱币给Alice。Alice欣然同意,并借给Tom游戏机玩了一天。第二天Tom对Bob说,太神奇了!你这可爱币还有吗,能不能再跟我换一点?Bob呵呵一笑,这可爱币,看不见摸不着,就在这个帐本里。而且很遗憾,我并不能伪造,我收到的可爱币必须是别人写记录给我的!Tom小朋友并没有见到所谓的可爱币,但他似乎感受到了那个账本的魔力,好像真的就有像棒棒糖形状的可爱币藏在其中。

    是的,比特币就有这个魔力,虽然只是个账本,但仿佛就是一枚一枚的金币。好了,大家现在应该已经理解了,比特币就是一个去中心化的记账,而且是公开透明的账本,任何随时都可以查账。

    七、比特币转账——签名认证:hash算法

    关于比特币的转账的问题,我们先前已经说过,但很粗略,尤其是在签名认证这个点上,几乎是一嘴带过,现在好好说一说。

    比特币是如何转账的呢?我们还是以Alice向Bob转账5个btc为例,Alice需要声明一下她要转账的这笔钱是哪来的,比特币其实没有余额的概念、只是一堆交易记录,首要需要声明要转账的五个btc是哪里来的、是谁转给你的。那里Alice可以胡乱声明吗?不行,因为她所声明的这些交易记录都会被检验,系统会自动对之进行核对,一旦发现有冲突就会拒绝这个声明。假设这5个btc分别来自两笔交易,张三转账2btc给Alice,李四转账3btc给Alice。然后Alice要写明,我将这5个btc转账给Bob。交易其实就算完成了。但是其它节点要对这个交易做两点验证:其一、这条信息是否Alice是所发,其二、Alice所声明的交易记录是否为真。后者比较容易,就是系统的自动核对。但前者如何进行?

    现在就是要好好讲讲:如何验证信息是否为Alice本人所发的。不妨想想生活中我们使用信用卡也需要签名来确认是否为本人所使用一样,这里需要的是数字签名。具体流程是结合了第一集提到的的非对称加密和hash算法的。

    这个hash算法是只能验证不能求解,什么意思?我们举个简单的例子,体会一下hash算法的精神;比如根号17202这个数的后几位小数是9291430,系统只发送9291430这个数,有没有可能猜到是哪个数的开平方后的后几位小数呢?这就太难了。但也有办法,那就是穷举法,一个数一个数去尝试,说个最笨的方式,你就从1开始尝试,最后终于尝试到了17202,惊喜地发现,这位仁兄、的开根号、的后几位、就是9291430,然后你就很激动地告诉大家:这个数就是17202。大家一算果然是,你好牛啊,你是花魁啊!

    咋样,这就是hash算法,它的加密规则是公开的,就是将原本的数字开根号取后几位小数,但你很难靠这几位小数推测出来原本的数字,唯一的方案就是暴力破解、穷举法,最终可以将原本的数字验证出来,这就叫hash算法。注意,刚才只是说的一个简单的例子,真正的hash肯定是很harsh的,是很复杂的,但都是这个气质。

    现在我们把hash算法这个过程抽象为h(),我们要加密的信息记为M1,则hash值为h(M1)。我们知道hash值是不能反推出来的,而且也不存在说另外一条信息M2,使得h(M2)=h(M1)。

    Alice向Bob转账这个过程中,Alice要需要发送两部分内容:一是援引的之前的交易记录,二是此番Alice要向Bob转账的交易记录,此两者构成了Alice要向Bob发送的整体信息,我们将之记做M1,可以想象这些信息都已经数字化了,即便Alice和Bob这两个人也是以公钥或者说是地址来代替的,双方都是匿名的嘛;我们只是为了表达方便,才直接说成Alice和Bob,其实是Alice用她这个地址给Bob的那个地址转账。

    如果Alice只发送这个整体信息M1,别人怎么确定就是Alice发送的呢?这一切必须要获得比特币世界所有人的认可啊。所以Alice在发送M1之前,还要对之签名。怎么签?签什么?那就是Alice要对整体信息M1 hash一下,你就可以简单地认为、对M1进行了开根号,然后得到最后三位是369,也就是h(M1)=369。然后我们以第一集所讲的91×11为例,Alice私钥为11,公钥为91。那么Alice就会把这个h(M1),也就是369乘上11的后三位059,连同信息本身发送出去。这就是Alice完成了数字签名。

    Alice周围各个节点收到信息以后呢?首先使用Alice的公钥也就是91对这个059进行解密,也就是059×91=5369,取后三位还原出信息为369。然后再对Alice发送的原文信息M1进行hash,发现结果也为369,这不就验证成功了吗?这信息的确是Alice所发送的。

    再略微展开一下,这里使用了跟Alice私钥配对的公钥,因为只有配对的公钥私钥才能解密,所以这个解密成功表明了确实是Alice发送的信息;其次,对Alice发送的原文进行了hash计算,发现也是369,也说明了Alice发送的信息没有被别人篡改。所以这些从哪里转来的又转到哪里去的信息确确实实是Alice发送的,然后大家再核对这些交易记录跟已有的账本是否冲突;如果不冲突,我们就确认了这条交易记录。即Alice的地址向Bob地址转账5btc这个记录有效。等到Bob想要花掉这5个btc时候,他就需要援引这条交易记录,同时对内容进行hash,再用这个公钥地址配对的私钥进行签名,同时发送信息,周而复始,妙不可言。中本聪,你是大葱中最聪明的那根葱。

    现在我要把刚才的验证过程再简单地梳理一下:ALICE在发送整体信息M1之前,先对M1进行了hash,发现结果是369,于是用私钥处理了369,也就是乘以11,将后三位059连同信息本身发送出去。这就是Alice完成了数字签名。Alice周围各个节点收到信息以后,先用Alice的公钥也就是91对这个059进行解密,即就是059×91=5369. 又发现将Alice原文信息M1进行hash,发现结果也是369,从而确认这天信息的确是ALICE发送的。你们说妙不妙,众妙之门,此门最妙。

    未完待续,本文章如有不同观点的朋友欢迎加威信525807559来探讨。

    jinse.cn 0
    好文章,需要你的鼓励
    jinse.cn 0
    好文章,需要你的鼓励
    参与评论
    0/140
    提交评论
    文章作者: / 责任编辑:

    声明:本文由入驻金色财经的作者撰写,观点仅代表作者本人,绝不代表金色财经赞同其观点或证实其描述。

    提示:投资有风险,入市须谨慎。本资讯不作为投资理财建议。

    金色财经 > 木木的诗和远方 > 什么是区块链,娓娓道来(4)
    • 寻求报道
    • 金色财经中国版App下载
      金色财经APP
      iOS & Android
    • 加入社群
      Telegram
    • 意见反馈
    • 返回顶部
    • 返回底部