美文网首页区块链
一文读懂区块链

一文读懂区块链

作者: 程序员实战 | 来源:发表于2018-01-22 19:42 被阅读474次

    区块链与比特币区块链本来是比特币系统中的一个技术模块,随着比特币发展的成熟,区块链概念慢慢的被包装出来。目前我们所讨论的区块链是一个更泛化的技术概念。可以说区块链概念抽象自比特币应用;也可以反过来说,比特币是区块链的一个技术应用的实现。当然先有比特币,再有区块链。

    本文详细介绍比特币与区块链的关系,比特币挖矿原理,中心化与去中心化,区块链的应用和发展,区块链的数据结构等知识。

    1.1 比特币介绍:简介

    比特币是一个虚拟的数字货币,目前仅限于网络交易,可以将其理解为股票。比特币创始人是中本聪(神秘人物),比特币最早发行于2008年底。

    比特币的单位是BTC,最小单位是聪(satoshi)。1BTC=1亿聪(也就是10^8聪),即1BTC可以拆分为任意个零钱(聪)。

    因为比特币网络是分布式的结构,基于P2P技术,所以任何人都可以成为比特币网络的节点;只要你的电脑可以连接上网络,安装了比特币的客户端就可以成为一个节点,就拥有了自己的比特币账户,然后就可以挖矿了。

    挖矿的术语叫做“工作量证明:POW(Proof Of Work)”。当你的电脑成为比特币网络的一个节点之后,就可以对比特币网络上的比特币交易进行证明是否的合法的,如果你的电脑客户端第一个给予了正确的证明(也就是确认),那么比特币系统就会给你一定的比特币进行奖励。奖励就是挖矿了!

    比特币的矿藏(总量)大约是2100万个,刚发行时候的一次奖励是50BTC,当时普通电脑就可以挖矿了。现在普通电脑已经不行了,因为挖矿的“难度”系数越来越高,而普通电脑的“算力”不够。

    1.2 比特币介绍:总量2100万个怎么算出来的

    在比特币系统中有个分布式账本(就是区块链),账本是由很多区块(节点)构成的。当创建一个奖励的时候就会产生一个区块。

    每开采210,000个块,大约耗时4年(10分钟产生一个区块),货币发行速率降低50%

    第一个区块是中本聪创建的(创世区块,编号为#0),奖励为50BTC。所以4年衰退一半(50%)就变成了25个,依次递归下去....最终在2140年的时候所有比特币会被挖完,总量2100万个(具体编程算法见附录)。截止2018年1月大概80%的比特币已经被挖完了。

    当比特币被挖完了,是不是就不会有那么多的终端接入了呢?当然不会,当比特币被挖完的时候,比特币系统会根据交易长度(字节数)算出手续费,当做给能证明交易合法的终端的奖励,也叫做 权益证明 POS(Proof Of Stake)

    1.3 比特币介绍:比特币所用到的主要技术

    分布式网络、P2P技术;区块链;智能合约;UTXO:Unspent Transaction Output (未消费的交易输出,账户余额就是来自于它);非对等加密算法 等等

    可以看出区块链最早是作为比特币系统中的账本出现的,也是中本聪创造的最巧妙的技术。UTXO、智能合约都是基于区块链实现的。

    后来,商业将区块链进行包装,区块链技术就此诞生,它已经包括了比特币中所有的技术。比如区块链的集大成者:Ethereum(以太坊),最开始的时候Ethereum并没有将UTXO吸收进来,但是后来发现账户交易上会出现问题,就又将UTXO吸收进来。

    2.1 区块链:非中心化—中心化—去中心化

    第一个小故事:在原始社会,部落还未形成的时候,在某个地方生活着一小撮原始人,大概10个左右。其中有两个人的名字分别叫阿三、阿四。阿三看上了阿四的茅草屋,就对阿四说,可以用100个贝壳来换。但是,在交换的时候,要把其他的8个人叫上,让他们见证这个交易。完成交易之后,大家都有一个共识:交易是有效的,茅草屋现在是阿三的。这就是非中心化

    第二个小故事:在现在的社会,阿三想买阿四的房子,必须通过房产交易中心来完成,才能证明交易的合法性。交易完成之后,房产交易中心来证明房子属于了阿三。房产交易中心就是中心化

    第三个小故事:阿三是某打车软件的司机,阿四是要打车的人;当阿四打车交易付费之后(比如20元),打车软件要扣去一定的费用(比如4元),将剩余的(8元)交给阿三。阿三心想,如果不用这个中心控制的打车软件,我也可以顺利接客,那就更好了。这就是 去中心化的一个例子

    其实我们生活中有很多中心化的例子:微信转账(收手续费),歌手卖歌需要签约唱片公司等等。如果我们可以用技术来实现第一个故事中的共识和见证是不是就可以去中心化了呢?这就是区块链最核心的哲学。


    2.2 区块链:交易的去中心化是如何实现的?

    三个重要的概念:

    1)区块链就是分布式账本

    2)分布式区块链网络的终端可以见证交易的合法性

    3)每一次交易会产生一个区块链节点(区块)

    交易流程:

    我们来分析一下交易的流程:

    1)假如用户B卖了一杯咖啡给用户A,用户A需要支付1BTC给用户B

    2)于是A会创建一条交易,其中包括金额,B的账号,交易备注等等信息

    3)交易创建完成之后,相当于A将此条交易广播到区块链的P2P网络中

    4)网络中的终端收到这条广播之后,就会就行验证这条交易的合法性,验证的过程就是“工作量”产生的过程。各终端算力(比如终端计算速度)竞争,谁先算出合法性,谁就获取奖励。

    5)一般由6个终端来共同确定这条交易的合法性。一旦确定交易的合法性,此交易区块(节点)就会加入到区块链(总账本)中,这条“链”的最后节点拥有人是B,所以B的余额就是多出1BTC。所以说:B的余额就是B所拥有的区块链最终节点的BTC的总和。也就是UTXO的总和。

    6)第一个胜出的终端会获得奖励(可以是系统给的矿藏奖励,也可以是交易的手续费)。奖励会被创建一个新的区块中,最终拥有人是获胜的终端。

    7)交易完成,挖矿成功!

    在这个交易的过程中,并没有中心化的一个机构来保证交易的合法性。所以这就是区块链的去中心化思想的实现。

    2.3 区块链:区块链的现实意义?

    如果去看技术行业的各个热门趋势,可能最抽象和不好理解的就是区块链。因为科技史上大部分创新都和生产力相关,让人做更少工作,让机器做更多工作。比如:转账汇款、打车软件、外卖。

    但区块链带来的最主要的颠覆却是生产关系上的。它要改变的是整个社会关系的游戏规则。比如,很多行业都在解决信任问题。以前我们需要有大机构或政府来进行担保,但现在这些可以抽象为一种账本记录,通过智能合约、区块链重点验证来实现。所以这是巨大的革命。

    2.4区块链:区块链的应用

    解决信任问题方向的应用

    1)药品的真假:一盒药从出厂到用户手中,其中的信息都可以在区块链中确认,完全可以解决药品造假的问题。

    2)投票

    解决中介的问题

    1)书、音乐的发行可以绕过发行公司,直接通过区块链传播到用户手中,没有盗版、没有中介。

    2)现在整个互联网都是网状平台结构,比如facebook,都是中心化的,我们的信息都被垄断,是不是对于这些个平台可以去中心呢?

    2.5 区块链:区块链的发展

    补充性的发展

    在现有的生产关系下,以辅助者的角色完成某些场景的区块链应用,比如投票、身份认证

    颠覆性的发展

    直接取代中介性质的中心化结构

    3.1 区块链开发技术:语言

    目前用户量比较大的区块链编程语言介绍

    Bitcoin:C++

    Hyperledger:go

    Ethereum:C++、go

    Corda:Java、Kotlin

    3.2 区块链开发技术:查看区块

    Bitcoin为例,创世区块,也就是中本聪创建的第一个区块

    编号为 #0 (打开这个网址就可以看到)

    https://blockchain.info/block/000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f

    3.3 区块链开发技术:区块的结构

    区块头 区块 数据格式 区块链

    1)每一个区块都有唯一的一个头hash值,标识区块的唯一性。

    2)每一个区块都有唯一的一个高度,但是一个高度不可以确定唯一的区块。

    3)每个区块中都有上一区块的头hash值,就行数据和结构中的链表一样,所以从任何一个区块逆向追溯,最终都会到创世区块(#0号区块)


    我们都是程序员!

    这里是程序员实战基地!

    10篇文章从入门到精通一项技术!


    相关文章

      网友评论

        本文标题:一文读懂区块链

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