zoukankan      html  css  js  c++  java
  • 区块链【5】你说要给我一百万,那么问题来了

    上期讨论了如何进行身份验证,现在我们知道如何去确认一条广播的信息是不是由本人发出的。现在假设收到了一条广播,内容是Alice支付给Bob一百万个比特币,经过身份验证,确认信息是由本人发出,未经篡改。那么问题来了,Alice有没有一百万个比特币呢?

    如何进行余额的检查呢?我们知道区块链是把很多的交易信息,一个块一个块打包,再把它穿一个串,链起来的,并且,每一个人在使用区块链比特币的时候,都会下载所有的块,从第一个创世纪的块开始,一直到最新的块,所以如果有一天Alice说,我要付给Bob十个比特币,并且把这件事给广播出去,其他人接收到这个消息后,就需要进行余额检查。怎么检查?通过追溯。将Alice的所有交易信息,从后向前逐条追溯。比如,Alice的第一条交易信息是通过挖矿获得了50个比特币,第二条是付给某人40个比特币,然后就没有记录了,那么我们就能知道,Alice现在的余额是10,足够支付,这条交易信息就会被全网接受。

    现在又假设,Alice只有10个比特币,但是她同时发送了两条广播,内容是分别向Bob和Carl支付了10个比特币,这种时候我们又如何来鉴别呢?

    由于网络延迟的存在,有些人会先接收到第一条消息,有些人会先接收到第二条消息。每一个用户接收到Alice的消息之后,会进行余额验证,先接收到第一条消息的人,会拒绝第二条消息,同理,先接收到第二条消息的人,会拒绝第一条消息。此时,既有接收了第一条消息的人,也有接收了第二条消息的人,但是没有关系,交易信息并没有被确认,直到有一个幸运儿,找到了那道数学题的解,然后打包了一个新的块,链到主链上去。新块产生后,其他人都会放弃自己的块,去接收新块,也就意味着双重支付中的某一条交易信息被确认,另一条被抛弃。这样,双重支付的问题就被解决了。所以,当接收到别人付款的时候,不能当时就认为比特币已经到账了,必须等到新块产生,付款信息已经记录在主链上时,才是真正的到账。

    我是蓝博hr,今天的区块链就聊到这里,我们下期见!

    官网:http://www.lenbor.com
  • 相关阅读:
    windows 将常用程序添加到右键菜单中去
    用MediaPlayer播放assets中的音乐文件出现的问题
    android开发技巧
    windows下如何安装java6.0
    ubuntu下运行windows程序wine
    ubuntu系统备份与恢复
    Mongo北京大会3月3号召开!报名抢注火爆进行中!(免费)
    《人月神话》作者Frederick P. Brooks, Jr.大师论设计原本
    HTML 5:富媒体时代的Web内容新规范
    2011年3月华章新书书讯:ASP.NET本质论、Erlang编程指南、SNS网站构建
  • 原文地址:https://www.cnblogs.com/lenbor/p/12660929.html
Copyright © 2011-2022 走看看