美文网首页区块链区块链研习社
小白区块链笔记002:区块链存储的第一个案例

小白区块链笔记002:区块链存储的第一个案例

作者: 来吃布丁 | 来源:发表于2019-03-01 20:41 被阅读2次

    对区块链有了最基本的理解后,接下来第二个绕不开的概念就是比特币。比特币最早源于2008年的一篇论文《比特币:一种点对点的电子现金系统》,而比特币这种电子货币就是以区块链的技术实现的,比特币就是区块链技术的第一个应用案例。

    在这里,吃瓜群众可能会疑惑,前文提到区块链是一种记录数据的方式,那么区块链如何和电子货币产生联系呢?

    我们来回顾一下我们目前常用的支付方式。以微信支付为例,我们可以向我们的微信账户里充值100元,我们的账户中便有了一个数字,这个数字代表我们可支配的钱,我可以把这100元用来购物或者给其他账户转账。但我不能同时做这两件事,如果购物花掉了100元,那么我便不能把这100元转给其他人。不同与纸币,这是电子货币必须要防止的问题,即“双重支付”或“双花”问题。腾讯公司为了让用户对其建立信任,必须要至少做到两件事:

    • 记清楚每个账户中的余额
    • 保证每笔钱不能重复使用

    回到比特币,只要比特币的系统也能做到这两点,那么比特币可以作为一种货币便说得通了。而比特币的独特之处在于,比特币的运行没有一个类似于腾讯公司的运营者为其担保,它完全靠一套设计好的计算机程序——区块链技术来做到。

    我们知道,区块链中的“区块”最主要部分就是数据部分,在比特币系统中,区块中存储的就是一段时间内所有账户的交易信息。从第一个区块开始,大约每10分钟产生一个新区块,新区块将这段时间的交易信息存储在其中,追加到区块链的末尾,形成一条越来越长的链条。由于“区块”之间由哈希函数产生联结,所以对于一个区块的改变,会导致该区块经过哈希运算产生的哈希值与后面的区块记录的哈希值不一致。

    但此时,会有另外一个问题,如果希望验证某条交易是否包含在一个区块中,或者交易记录被篡改,有没有快速定位到这条交易的方式。因为一个区块中包含了很多数据,且区块数量在不断增长,要逐条去比对,显然效率会比较低。为此,在区块链中引入了一种结合哈希函数的分叉结构——Merkle树,利用Merkle树可以验证数据块是否完整,并且只需要很少的信息,便可以验证某项交易是否存在于区块中。


    Merkle树结构

    比特币系统中采用的Merkle树采用的是二分叉的方式,简单说就是每个点最多只能分两个叉。先把每条数据经过哈希运算而对应于一个哈希值,每两个哈希值两两组合成一个值再经过一次哈希运算,这样不断重复这个过程,一个区块中所有的数据经过这样的过程,最终会产生一个哈希值,我们把这个哈希值就成为Merkle树根。

    有了这个Merkle树根,就不需要比对整个区块,只需要比对这个值就可以对区块的完整性进行验证。同时,只要比对少部分数据,就可以验证某项数据是否包含在这个区块中,比如要验证004是否在此区块中,不需要其它数据项的详细信息,只需要树根、A、B、E这几个节点的哈希值进行验证即可。

    比特币系统将一段时间内的交易信息全部记录在区块中,随着时间的推移,交易会越来越多,区块链也会越来越长。但是由于区块的大小是有所限制的,区块产生的时间间隔也大约是一致的,因此这限制了同一时间的交易的次数。以比特币为例,每秒的交易次数大约只有7笔,这和现有的实际支付场景中每秒交易数万次相差甚远,也因此限制了比特币在大多场景的实际应用。

    现在总结一下,比特币是应用区块链技术的第一个应用,将比特币账户之间的所有交易按时间序列存储在区块中,做到了所有交易信息可以追溯,在存储交易数据时,采用了一种Merkle二叉树的结构,可以方便的对区块的完整性进行验证,也可以用于快速验证某项交易数据是否包含在区块中。

    货币的本质就是一种信任,比特币通过区块链技术建立起用户对于此种电子货币的信任,如果这种信任广泛被认可,比特币便可以被正常交易,但由于一些技术原因限制了比特币在更广泛场景的应用。接下来会和大家分享另一个重要的问题,比特币如何防止用户进行双重支付。

    相关文章

      网友评论

        本文标题:小白区块链笔记002:区块链存储的第一个案例

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