大话区块链

作者: wolf4j | 来源:发表于2018-01-16 09:22 被阅读75次

    先介绍几个名词:

    UTXO:比特币交易中的基础构建单元是交易输出。 交易输出是比特币不可分割的基本组合,记录在区块上,并被整个网络识别为有效。比特币完整节点跟踪所有可找到的和可使用的输出,称为 “未花费的交易输出”(unspent transaction outputs),即UTXO。。。。尽管UTXO可以是任意值,但一旦被创造出来,即不可分割。一个UTXO只能在一次交易中作为一个整体被消耗。

    区块链是什么,究竟要解决的是什么问题?它是否能像今天的互联网一样,是下一个时代的颠覆者呢?

    OK,今天带大家一步步了解一下!
    在谈区块链之前,先来简单说一下,当下我们习惯的购物方式:

    过年了 你在某宝上定制了一枚钻戒,将白花花的银子打到蚂蚁金服这样的第三方权威机构上,等待卖钻戒的人发货给你,好讨女朋友的欢心,可惜,尴尬的事情发生了,蚂蚁金服大佬和小姨子逃跑了,卷走了你的钱,你目前人财两空,独自走在街头流泪。

    把这件事情放在区块链的领域,那么这件事情就简单很多了,你只需要和卖家相互确认这件事情,那么就OK了,当然这还不是很明显,假设有成千上万的交易,那么去中心化的机制,是不是显得更加便捷、节省资源。假设你买了一点安全措施,也没必要担心信息泄漏,嘿嘿。

    那么问题来了,没有了这种类似央行一样的权威中心,那么我怎么知道你所发的消息是准确而且可信的(这是两个问题:一个准确,一个可信)

    所以,要想解决上述问题,也就必须面对,困扰已久的两个难题

    • 两军问题
    • 拜占庭将军问题

    提到;两军问题,首先谈一下咱们最熟悉的tcp三次握手协议,那么大家想一个问题,tcp三次握手之后难道就能保证信道是绝对安全的么?所以,专业点来说就是“在分布式计算上,试图在异步系统和不可靠的通道上达到一致性是不可能的”。所以,tcp三次握手是我们在长期的经验之下得出来的一种共识,是一种相对稳定的状态。

    其次,从拜占庭将军问题所反应到区块链的问题来看,在一个去中心的系统中,肯定会存在一些节点是处于不work的状态,那么这就会造成他们不与其它节点交互,或者send error message。也就没办法保证数据传输的准确性。

    接下来,我们构建一个完全去中心化的模式。

    琮琮是当地的大地主,有一天“洗衣机磊”结婚缺点钱,向琮琮借了一万块,琮琮怕洗衣机磊哪天耍赖皮,所以找来了他的小三,小四等三千后宫佳丽,都做见证人,大家都在自己的小本本上,记录:洗衣机磊今天借了琮琮的一万块,琮琮也向大家宣布,今天洗衣机磊借了我的一万块。这么一个简单的去中心化系统就建立起来了,我们不需要任何权威机构见证,假如,哪天洗衣机磊,出来说:自己没有借钱,那么琮琮的三千后宫佳丽会当场见证,你借过。

    在上述的这个去中心化系统中,有三个角色:琮琮、洗衣机磊、三千佳丽。

    大家可能会意识到,其实在这个系统中,“1w元”我可以替换成任意东西,只要琮琮和洗衣机磊认可,后宫三千佳丽见证,那么这个交易便是成立的,OK,那么,换成大家所期待的比特币也是一个道理。

    中本聪正是基于这样的一种设想,构建了他的第一版区块链示意图:

    区块链示意图

    这个简单的去中心化模型,漏洞百出,琮琮的后宫三千佳丽正在和琮琮的堂弟表哥们玩耍,被叫过来,很是不爽,我凭什么要过来啊。这时土豪琮也觉得有道理,所以琮琮说,凡是第一个为我见证的将得到十克拉钻石。这也就是中本聪设想的区块链中的—激励机制。

    • 第一种激励机制,也叫做币基交易,就是说发现一个新块的第一笔交易。作为激励发给发现该块的矿工,每一个block只有一个币基交易。
    • 第二种激励机制,是交易费,当输出小于输入的情况时,他们的差值作为交易费,奖励给他人,存在这种激励机制的另一个原因也是因为,在整个交易过程中,标准输出是最小的单位,也称为(UTXO),他是最小单元不可分割,但是存在找零的一个过程。

    那么交易费该如何理解呢?

    后面过来的小五不开心了,和琮琮撒娇,我有个弟弟也要结婚,我也想与你做一个交易,你借我5000块就行,可是土豪琮只有一万块一张的整币,没辙,只好给小五,剩下的5000块作为交易费送给小五。

    在这个过程中,还有一种情况可能会发生,那就是小三和小四是双胞胎,他们一起喊出:我收到洗衣机磊借琮琮的一万块这条消息,紧接着过来的小五小六。。。有点懵,我该听谁的呢?管她呢,小五和小三关系好,听小三的,小六和小四关系好,听小四的,但是理论上这种情况可能会一直延续下去啊,那么该如何解决呢?土豪琮设置了一定的难度规则,小三坐飞机过来,结果它过来的快了,所以小四你别做飞机了,你坐马车吧。。不断如此调整这个难度规则,来保证,小三,小四。。。过来的时间都是差不多的。这种情况就是区块链中所描述的暂时分叉问题,这种情况是暂时的,当有一方获胜的时候,另一方会将自己的交易以utxo集的形式重新扔回矿池中,继续广播,寻求下一步认证。

    那么在区块链中:整个网络会通过调整“难度”这个变量来控制生成工作量证明所需要的计算力。全网中每新增2016个区块,全网难度将重新计算,该新难度值将依据前2016个区块的哈希算力而定。目的就是使整个网络的计算力大致每10分钟产生一个区块。

    现在总结一下:

    上述所描述的究竟我是该听小三还是小四的问题(暂时分叉),就是中本聪破解拜占庭将军问题的设想。在解决这个问题上,用到了密码学中merkle树的思想来简化存储、寻找、验证等问题。merkle树是从下到上构建的。


    image.png

    小三,小四。。在自己小本本上记录的过程就是,我们挖矿的过程。

    小三坐飞机,小四坐马车,也就是琮琮设定的不同难度,就好比特币挖矿的难度。

    飞机的速度,马车的速度,就好比我当前全网的算力究竟有多快。

    琮琮通过设定新的规则,就是工作量证明(POW)。

    那么,现在再来谈什么是区块链呢?

    区块链就好比一条单向(绝对不可能反向)的链表,每一个节点就好比一个块,每一个块的第一笔交易(币基交易)作为激励奖励给发现这个块的矿工,通过不断的难度调整,通过工作量证明,来保证整个工作链不出现分叉。这个链不断的延伸,所以越来越难挖,目前显卡、fpga、都挖不动了,基本到了10纳米级的芯片,一台服务器,搭载几百个这样的芯片在做计算,再发展下去,感觉需要用到银河二号出马了。

    更条理的来说:

    • 区块链是一个放在非安全环境中的分布式数据库(系统)。

                要点:(1)分布式,(2)非安全环境。
    

    • 区块链采用密码学的方法来保证已有数据不可能被篡改。

                要点:(1)密码学哈希函数,(2)非对称加密。
    

    • 区块链采用共识算法来对于新增数据达成共识。

                共识算法的目的,就是让所有节点对于新增区块达成共识

    相关文章

      网友评论

        本文标题:大话区块链

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