赞
踩
本系列章节主要讲解区块链原理以及开发区块链应用;
先有的比特币系统,再有的区块链理论,所以我们先来了解比特币的产生背景,以及比特币的现状。那么为什么第一个区块链系统会是以数字货币的形式出现呢?为什么比特币会获得成功?
金融危机频繁出现导致人们对政府不信任,加速了以电子货币寻求解决方案的步伐。比特币的诞生正值全球金融危机,人们对政府和银行对于货币的管理能力十分失望。
2008年,中本聪(Satoshi Nakamoto),发表了《比特币:一种点对点的电子现金系统》,比特币系统作为一种去中心化的系统,不受任何政府控制,发行总量恒定,总共将发行2100万个比特币,目前已经生成1600多万,目前总市场规模在1400+亿美元左右;
2009年1月3日,中本聪创造第一个区块,即创世区块。泰晤士报头版标题《TheTimes 03/Jan/2009 Chancellor on brink of secondbailout for banks》,这一句话被写在创始区块之中被永久保留下来。
比特币的出现也是一个比较神秘的事件,到目前为止,中本聪是谁仍然是一个谜,有人说他是日本人,有人说他是美国人,也有人说他是外星人,也有人说他不是一个人。
比特币系统是迄今为止最成功的区块链应用,10年来没有出现过任何一次服务暂停,任何交易均可被追溯,但是交易者地址是可公开的,但是身份却是匿名的;
比特币是第一种数字货币,那么究竟什么样的货币才是数字货币呢?无现金系统是否是数字货币?
在当前国内金融环境中,无现金交易已经十分普及,包括支付宝、微信支付等支付手段,包括传统的银行卡刷卡,这些都是无现金支付。
一般来说,我们现在提到我们现在提到的数字货币都是密码货币,这里提到的支付宝、微信支付或者银行卡可以认为是电子货币,本质上还是对应法币,和数字货币有本质的区别。
电子货币 | 民间数字货币 | |
---|---|---|
定价方式 | 以主权货币计价 | 以其自身价值计价 |
价值属性 | 受到货币政策影响 | 由供需决定(在中国被视为大宗商品) |
发行 | 央行 | 算法 |
记账 | 多个账本(需要对账确保数据一致性,在复杂商业活动中会是很大的工作量) | 单个账本(数据一致性由区块链平台底层保证,减少工作量和出差错的可能) |
流通 | 信息流和资金流分离 | 信息流和资金流合一 |
具体案例 | 微信支付、支付宝钱包等 | 比特币 |
这两个问题其实也是其他的货币系统所要解决的问题,只是在不同的货币系统中有不同的解决方案和解决难度。
在传统的货币系统中,都是存在中心化的记账机构,你需要证明你是账户的所有者,银行在一笔交易完成前会冻结这笔资金,确保不会被重复使用。
但是在区块链的世界里,并不存在这样的中心化记账机构,所有的数据是通过全部节点共同维护的,在这种条件下解决防伪和双花问题面临的难度会比传统环境中更加高,更加复杂。
比特币区块链网络,我们可以看到网络是有不同的节点组成的,每个节点可以简单理解成是安装了比特币客户端软件的计算机,我们平常使用的计算机也可以安装软件后作为节点加入挖矿,但是很少有人这样做,这样做很难挖到比特币,即使挖到了币了也不够电费,专业的需要专门的挖矿机器来参与才有可能有利可图。
防伪方案主要是解决发送到区块链网络中的消息可信性的问题,这里主要使用到了密码学里面的非对称加密算法。
比特币的记账方案与传统的金融系统的记账方案不太一样,传统的金融系统是基于账户进行记账的,用户首选需要在银行里开一个账户,资金的转入转出都是跟账户关联,在进行查询的也是会使用账户进行查询余额、转账记录等历史交易。
现在银行、信用卡、证券交易系统、互联网第三方支付系统,其核心都是基于账户(account based)的设计,由关系数据库支撑。
在比特币系统中,比特币的区块链账本里面记录的是一笔又一笔的交易。记账方案为UTXO(未花费过的交易输出),每笔交易都有若干交易输入,也就是资金来源,也都有若干笔交易输出,也就是资金去向。 一般来说,每笔交易都要花费(spend)一笔输入,产生一笔输出,而其所产生的输出,就是UTXO。
UTXO(Unspend Transaction Output)是未花费的交易输出,它是比特币交易生成及验证的一个核心概念,交易构成了一组链式结构,所有的合法的比特币交易都可以追溯到前向一个或多个交易的输出,这些链条的源头都是挖矿奖励,末尾则是当前未花费的交易输出。
比特币交易遵守如下几个规则
我们在比特币钱包中所看到的账户余额,实际上是钱包通过扫描区块链并聚会所有属于该用户的UTXO计算得来的。
UTXO记录方式的优点
区块链底层都是以链式的方式进行存储,一个接着一个区块,每个区块都会指向前一个区块,这也是区块链名字的由来。在比特币系统里大概每10分钟就会产生一个区块,新生成的区块会被挂到链条的最后。
在图上,我们可以看到区块4之后产生了两个区块,都是指向区块4,这个就叫做分叉,基于POW共识算法的区块链系统都会发生这种事情,简单的说,分叉是不同的节点分别产生了新的区块引起的,具体的细节,在我们学习了POW原理的时候,才能理解。
每个区块由两部分组成:区块头和区块(block),区块体比较简单,内容是交易数据的列表,区块头包含版本信息、随机数(跟区块产生有关)、前一个区块Hash、时间戳、Merkle值(记录了所有交易的hash)。
我们都知道区块链有一个很重要的特性:**不可篡改性,**如果你修改了某个区块的哪怕一个bit的值都会导致这个区块的Hash值与原来完全不同。
按照中本聪的原文,SPV(支付验证)会在区块链查找交易(为了验证支付),并且需要连接到一个全节点来检索必要的数据,这个机制允许在运行一个全节点的情况下有多个轻钱包,为了实现PSV,是需要有一个方式来检查是否一个区块包含了某笔交易,而无需下载整个区块,这就是Markle树所要完成的事情。
从根节点形成的过程可以看出根节点的hash值综合了所有叶子的节点的hash,也就是说任何一个叶子节点的交易记录被改动任何一个bit都会导致根节点的hash完全不同。所以知道了根节点的所有hash值之后,就可以验证了这笔交易是否为这个区块所包含的交易。
在比特币的网络里不是每个节点都有能力存储完整的区块链数据,受限于存储空间的限制,有些节点只下载了区块头,利用Merkle树的性质也可以验证交易的真实性。
首先在区块链比特币网络里,用户在持续发起交易发送到各个节点,每个节点收到交易后会把记录存放在自己的Memory pool中,在验证了交易记录的真实性之后,节点就会尝试把这些记录打包成一个新的区块,如果打包能成功,节点就会这个打包结果(也就是新的区块)发送给其他节点,其他节点在收到新的区块,其他节点也会进行验证,如果确认没有问题,就会把这个区块加入到区块链中,并且已经打包到新区块中的交易从自己的Memory pool中剔除。
对于打包成功的节点来说,他就是挖出了新的区块,能够获得一定数额的比特币的奖励。
整个共识算法的核心,整个共识算法的核心是哈希函数在进行计算,函数的输入是区块头的一些值(包括markle值、时间戳、随机数等),输出的是一个固定长度的数值,但是并不是每一个输出都是一个正确的解(正确的解有一个固定的范围,要求前面几位都是0,0的数量越多,求解的难度就越大,每多一个0,计算的难度翻倍)。究竟有几个0是动态调整的,如果比特币网络算力不断的增加,0的个数也会随之变多,最终达到大概每十分求出一个解的频率。
在这个哈希函数,只有随机数是变化的,所以挖矿的过程就是不断变化随机数的值来求得哈希函数结果,直到最终算出一个正确的解。
生成交易,并与其他所有准备打包进区块的交易组成交易列表,通过Merkle Tree 算法生成Merkle Root Hash。
把Merkle Root Hash及其他相关字段组装成区块头,将区块头的80字节数据(Block Header)作为工作量证明的输入。
不停的变更区块头中的随机数即nonce的数值,并对每次变更后的区块头做双重SHA256运算(即SHA256(SHA256(Block_Header))),将结果值与当前网络的目标值做对比,如果小于目标值,则解题成功,工作量证明完成。
从上述的讲解过程中,我们可以了解到区块链的最早来源于比特币系统,可以说先有比特币再有区块链的概念。
很多人把发币和区块链也混为一谈,但并不是所有的区块链系统都需要发币的。区块链是当前的风口,大家对区块链的期望也很高,认为它是下一代的基础设施、价值传输的网络,有可能改造、甚至颠覆各个行业。
但是比特币系统显然本身并不具备这种能力。
以太坊是第二代区块链系统,也是公有链,所以具有公有链的一般特征。与比特币相比,以太坊最大的改变是可编程能力,意味着其能够支持的应用场景更加丰富了。这种通用化的编程能力是通过智能合约来实现的。
智能合约是一种图灵完备的编程语言,支持丰富的程序逻辑,我们可以通过智能合约来开发区块链上的票据应用、应收账款应用、业务节点等各种产品。从性能指标上来看,以太坊也有很大的提升。最后,以太坊也是需要发币的,一般来说公有链系统都是需要发币的,因为公有链吸引用户参与需要一种激励机制,这种激励一般都是通过发币来实现,如果公有链不发币很难激励用户参与进来。
2015年出现了新一代的区块链系统,区块链技术已经跟特定的公有链脱离开来,大家发现区块链技术的潜力远远不止发行数字货币,可以被应用到金融、医疗、贸易、版权等各个行业。但在企业级应用的场景中,对区块链平台的要求不同于公有链,比如在共识机制上要求有更高的确定性,而不需要通过挖矿竞争,在性能上、隐私保护等方面要求也会更高,在这种要求下,新一代的区块链系统就应运而生了。
联盟链的典型代表:开源平台Fabric、趣链(Hyperchain)。
联盟链主要提供企业级的解决方案。
联盟链的核心技术:准入机制、高效共识、权限控制、隐私保护等。
我们讲到区块链的时候都会讲到去中心化,但确切地来说去中心化是公有链的特征。
区块链是一种以非堆成加密技术对交易进行数字签名,通过共识机制达成多节点一致(拜占庭容错),数据以链式区块形式组织存储的分布式账簿系统。
智能合约是内嵌于区块链上的自定义程序逻辑,智能合约可以持有数字货币,在所有验证节点上运行,当满足一定条件,区块中的程序逻辑会被触发执行合同约定的指令(比如资产清算、赔偿、交割等)。
现在商业合作一般都是通过法律协议来约定权利和义务,规定甲方和乙方在规定时间内应该做什么事情,违约后应该怎么样处理这些条款,现在这些协议都是文本式,具体的执行还是大量依赖人工介入,比如一方拖欠款项,另一方需要向法院起诉获得赔偿,具体执行又要涉及到公安、财产征信机构等各种服务机构,效率比较低,成本比较高,但是如果未来区块链成为普遍的基础设施以后,商业合作就可以通过智能合约来进行,智能合约可以说是可执行的法律协议,可以极大的提升社会协作的效率。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。