1、2008年全球金融危机,以美国为首的货币超发引起金融危机,这也就是比特币产生的原因和动机。
2、2008年10月,中本聪Satoshi Nakamoto发表比特币论文《bitcoin:A peer to peer electronic cash system》,描述了一种被他称为“比特币”的电子货币及其算法;
3、2009年1月3日,中本聪开发出首个实现了比特币算法的客户端程序并进行了首次“采矿”(mining)。北京时间2009年1月4日 2:15:05 AM(英国时间约2009年1月3日 18:15:05 PM) 比特币的第一个区块,这就是创世区块产生。
中本聪获得了第一批50个比特币。挖矿奖励比特币数并不是固定的,每产生21万个区块奖励就减半。截止到目前每挖到一个区块奖励为12.5个比特币。
在第一个区块中,没有交易记录。而是将《泰晤士报》2009年1月3日的一条新闻永远记录在了其中。
The Times 03/Jan/2009 Chancellor on brink of second bailout for banks
财政大臣濒临第二次银行救助的边缘
4、2010年,中本聪销声匿迹,将项目移交给比特币社区的核心成员嘉文.安德烈森。中本聪据信持有约一百万个比特币。目前价值约79.3亿。
##2. 比特币是什么?
1、比特币是加密数字货币,没有现钞,没有比特币实物货币,也没有银行网点;
2、所有账目公开透明、可查询;https://blockexplorer.com/
3、比特币是基于P2P网络的一种分布式系统;
4、比特币是基于非对称加密技术(公开密钥算法)的交易;
5、法币是通过央行来发行,而比特币是通过挖矿产生。
6、比特币的特性
##3. 比特币是如何发行的?
比特币不是任何银行或金融机构发行的,使用比特币不需要绑定银行卡,不需要任何身份证明,不需要手机短信认证。只要能上网,只要安装了比特币客户端软件(钱包),就可以转账、收款,甚至是挖矿。比特币的生产就是靠挖矿。
1、挖矿
2、比特币钱包
“钱包”一词在比特币中有多重含义。
3、比特币节点
4、挖矿三部曲:记录、打包、挂链
##4. 比特币与区块链的关系
1、区块链是比特币的底层技术,比特币是区块链的第一个应用。
2、比特币是钱的话,区块链就是账本,是记录比特币转账记录的。但是区块链不单单是比特币独有,除了数字货币外,区块链将在其他应用领域有更多用武之地。
3、中本聪在其比特币白皮书里面其实并没有提到过区块链(blockchain)这个名词,但是提到了两个概念block和chain。直到2014年金融机构开始重视比特币的底层支撑技术,于是区块链这个概念才被正式确认。
4、区块链并不是新技术,而是一系列技术的集成。包括非对称加密技术、时间戳、共识机制等。几乎所有的技术在比特币出现之前就已经存在了,但是在比特币之前,这些技术都没有产生如此巨大的影响力,所以说比特币是区块链技术的第一个成功的应用。要想学习区块链技术,比特币是绕不开的东西。然而区块链,却并不仅仅是比特币。
5、比特币是世界公认的第一条区块链,也是目前世界上最强壮最安全的区块链。
● 比特币被称为第一代区块链的代表,主要的应用方向是加密数字货币;
● 以太坊称之为第二代区块链,以太坊不仅有自己的加密数字货币(以太币),更主要是一个区块链开发平台,主要的应用方向是开发智能合约和DApp开发;
● 超级账本是第三代区块链,跟加密数字货币没有关系,是面向企业的分布式账本平台,引入了权限管理。
##5. Block和BlockChain
区块链的本质是什么?一句话,它是是一个多方参与、共同维护、持续增长的分布式数据库,也称为分布式共享账本。
首先,区块链的主要作用是储存信息。任何需要保存的信息,都可以写入区块链,也可以从里面读取,所以它是数据库。
其次,任何人都可以架设服务器,加入区块链网络,成为一个节点。区块链的世界里面,没有中心节点,每个节点都是平等的,都保存着整个数据库。你可以向任何一个节点,写入/读取数据,因为所有节点最后都会同步,保证区块链一致。
最后,所有节点共同维护一条不断增长的链,只能添加记录,记录不可删除、不可篡改;
区块链没有管理员,它是彻底无中心的。
其他的数据库都有管理员,但是区块链没有。如果有人想对区块链添加审核,也实现不了,因为它的设计目标就是防止出现居于中心地位的管理当局。
正是因为无法管理,区块链才能做到无法被控制。否则一旦大公司大集团控制了管理权,他们就会控制整个平台,其他使用者就都必须听命于他们了。
但是,没有了管理员,人人都可以往里面写入数据,怎么才能保证数据是可信的呢?需要了解区块的设计思想。
- 以比特币为例,区块链通过时间戳和工作量证明机制,解决了双花和拜占庭将军问题。这就保证了同一笔比特币不可能被花费两次,并且在这整个去中心化的区块链网络中,可以让节点保持一致性。
- 非对称加密机制保证私钥的安全性,时间戳保证区块按顺序链接成链,工作量证明机制解决了在去中心化系统中如何公平地分发比特币的问题。
- 区块链具有匿名性、去中心化、公开透明、不可篡改等特点。所以区块链被誉为制造信用的机器,实现机器信任;。
- 区块链本质上解决了信任和价值传递。这种强信任背书的情况下,任何人没有能力,也没有必要质疑数据的质量和真实性。
这里,你需要理解什么叫 Hash,这是理解区块链必需的。
hash是一种算法, 是将文本转换成具有相同长度的,不可逆的杂凑字符串散列(很多资料也叫指纹或叫消息摘要Message Digest)。本身词义"切碎,剁碎"。
hash算法的特点:
HASH主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系。
安全散列算法SHA:
安全散列算法SHA(Secure Hash Algorithm)是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。SHA-1已经不是那么安全了,google和微软都已经弃用这个加密算法。为此,我们使用热门的比特币使用过的算法SHA-256作为实例。其它SHA算法,也可以按照这种模式进行使用。
所以, Hash 就是计算机可以对任意内容,计算出一个长度相同的特征值。区块链的 Hash 长度是256位,这就是说,不管原始内容是什么,最后都会计算出一个256位的二进制数字。而且可以保证,只要原始内容不同,对应的 Hash 一定是不同的。
举例来说,字符串123的 Hash 是a8fdc205a9f19cc1c7507a60c4f01b13d11d7fd0(十六进制),转成二进制就是256位,而且只有123能得到这个 Hash。
因此,就有两个重要的推论。
推论1:每个区块的 Hash 都是不一样的,可以通过 Hash 标识区块。
推论2:如果区块的内容变了,它的 Hash 一定会改变。
我们可以通过下面这个网址,进行hash,block,blockchain等等演示。。
https://anders.com/blockchain/hash.html
不同内容,生成的hash也不相同。
区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。
每个区块包含两个部分:
【区块头(Head)】记录当前区块的元信息。
【区块体(Body)】实际数据。
区块头包含了当前区块的多项元信息。
1、生成时间
2、实际数据(即区块体)的 Hash
3、上一个区块的 Hash
4、等等。。
接下来我们演示一个挖掘新块的过程:
产生区块链的过程:
区块与 Hash 是一一对应的,每个区块的 Hash 都是针对”区块头”(Head)计算的。
Hash = SHA256(区块头)
上面就是区块 Hash 的计算公式,Hash 由区块头唯一决定,SHA256是区块链的 Hash 算法。
前面说过,区块头包含很多内容,其中有当前区块体的 Hash(注意是”区块体”的 Hash,而不是整个区块),还有上一个区块的 Hash。这意味着,如果当前区块的内容变了,或者上一个区块的 Hash 变了,一定会引起当前区块的 Hash 改变。
这一点对区块链有重大意义。如果有人修改了一个区块,该区块的 Hash 就变了。为了让后面的区块还能连到它,该人必须同时修改后面所有的区块,否则被改掉的区块就脱离区块链了。由于后面要提到的原因,Hash 的计算很耗时,同时修改多个区块几乎不可能发生,除非有人掌握了全网51%以上的计算能力。
正是通过这种联动机制,区块链保证了自身的可靠性,数据一旦写入,就无法被篡改。这就像历史一样,发生了就是发生了,从此再无法改变。
每个区块都连着上一个区块,这也是”区块链”这个名字的由来。
由于必须保证节点之间的同步,所以新区块的添加速度不能太快。试想一下,你刚刚同步了一个区块,准备基于它生成下一个区块,但这时别的节点又有新区块生成,你不得不放弃做了一半的计算,再次去同步。因为每个区块的后面,只能跟着一个区块,你永远只能在最新区块的后面,生成下一个区块。所以,你别无选择,一听到信号,就必须立刻同步。
所以,区块链的发明者中本聪(这是假名,真实身份至今未知)故意让添加新区块,变得很困难。他的设计是,平均每10分钟,全网才能生成一个新区块,一小时也就六个。
这种产出速度不是通过命令达成的,而是故意设置了海量的计算。也就是说,只有通过极其大量的计算,才能得到当前区块的有效 Hash,从而把新区块添加到区块链。由于计算量太大,所以快不起来。
这个过程就叫做采矿(mining),因为计算有效 Hash 的难度,好比在全世界的沙子里面,找到一粒符合条件的沙子。计算 Hash 的机器就叫做矿机,操作矿机的人就叫做矿工。
难度系数
你可能会有一个疑问,人们都说采矿很难,可是采矿不就是用计算机算出一个 Hash 吗,这正是计算机的强项啊,怎么会变得很难,迟迟算不出来呢?
原来不是任意一个 Hash 都可以,只有满足条件的 Hash 才会被区块链接受。这个条件特别苛刻,使得绝大部分 Hash 都不满足要求,必须重算。
原来,区块头包含一个难度系数(difficulty),这个值决定了计算 Hash 的难度。举例来说,第516532个区块的难度系数是 3,511,060,552,899.72。
区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。显然,难度系数越大,目标值就越小。
Hash 的有效性跟目标值密切相关,只有小于目标值的 Hash 才是有效的,否则 Hash 无效,必须重算。由于目标值非常小,Hash 小于该值的机会极其渺茫,可能计算10亿次,才算中一次。这就是采矿如此之慢的根本原因。
区块头里面还有一个 Nonce 值,记录了 Hash 重算的次数。第 516532 个区块的 Nonce 值是2099127697,即计算了 20.99 亿次,才得到了一个有效的 Hash,该区块才能加入区块链。
难度系数的调整:
就算采矿很难,但也没法保证,正好十分钟产出一个区块,有时一分钟就算出来了,有时几个小时可能也没结果。总体来看,随着硬件设备的提升,以及矿机的数量增长,计算速度一定会越来越快。
为了将产出速率恒定在十分钟,中本聪还设计了难度系数的动态调节机制。他规定,难度系数每两周(2016个区块)调整一次。如果这两周里面,区块的平均生成速度是9分钟,就意味着比法定速度快了10%,因此难度系数就要调高10%;如果平均生成速度是11分钟,就意味着比法定速度慢了10%,因此难度系数就要调低10%。
难度系数越调越高(目标值越来越小),导致了采矿越来越难。
##6. 国内外区块链的知名项目
国外区块链的知名项目
1、EverLedger
2、Monegraph
Monegraph使艺术家们从菜单中选择出售、授权、转售以及合成音乐的权利,并允许他们自己确定价格。对于买家们,平台允许他们不通过经纪人就能放心了解到艺术品的信息及艺术家归属,且这些信息都可以通过区块链技术得到证实。
星际文件系统 IPFS
3、GemHealth
用区块链存储医疗记录和数据。
国内区块链的知名项目
1、迅雷链克
2、人人坊
3、网易招财猫
4、阿里巴巴电商与区块链
5、腾讯黄金红包
6、小米营销数据链
7、京东:区块链全程溯源。
8、YOYOW:(you own your own words)内容生产领域进行贡献定价和权益回报平台
9、GCS游戏链(Game Chain System)
10、Kcash数字资产钱包:获得数千万元融资。
11、其它:消除中介信用问题。数字货币领域是区块链最好的应用之一;此外在支付领域,区块链技术可以消除第三方而直接点对点支付,而且使支付更安全。溯源的特性可以监管洗钱等违法活动。区块链可以在征信、版权、公证、证券、资产管理等领域逐渐得到应用。
##7. 区块链相关的应用及公司
1、公证防伪:公证通(factom)、Monegraph、Stampery、Bitproof、Uproov、Chronicled、Blockai;
2、智能合约:彩色币(coloredcoin)、闪电网络(lightningnetwork)、侧链(sidechain)、Tendermint、Chronicled、SuperNET、Blocknet、Tezos、Openchain、Crypti、Rubix、MultiChain、超级账本(hyperledger)、The DAO(thedao)、WAVES、Synereo、WINGS、cyber miles;
3、物联网:ADEPT、Filament、Tilepay、Slock.it(slockit);
4、身份验证:BlockScore、Shocard、LaunchKey、BitNation;
5、预测市场:Augur、Truthcoin、Futarchy;
6、资产交易:比原链(bytom)、量子链(qtum)、Medici、SETL、Symbiont、DAH、SETL、小蚁(antshares)、SWARM、Koinify、Lighthouse、Safe Cash(safecash)、t0、Linq、Colu、元界(metaverse)、瑞资链金融(reitschain)、公信宝(gxb)、OpenLedger;
7、电子商务:OpenBazaar、Eris、BitXBay、Bitmarkets、Skuchain、Purse;
8、社交通讯:Gems、Codius、比特信(bitmessage)、Twister、Clucker、Diaspora;
9、文件存储:MaidSafe、Enigma、Filecoin、公证通(factom)、Storj、Tau、Dfinity、Bit Cloud、IPFS、Mediachain;
10、数据API:Coinalytics、Blocktrail、BlockCypher、TradeBlock、Scorechain、Gem;
11、其它:Tierion、Safe Cash(safecash)、bitwage、Crypti、IPFS、DECENT、亿书(ebookchain)、好扑区块链(hoopox)、Energo、天算(delphy);
12、银行结算:R3CEV、Corda;
13、区块链金融:iCube;
14、操作系统:亦来云(elastos);
##8. 区块链的不足
实际上区块链作为一种新兴技术,价值固然存在,但也显现出了一些劣势。
1、效率低。数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间。拿比特币举例,当前产生的交易有效性受网络传输影响,比特币交易每次的确实时间大约10分钟,6次确认的话需要一个小时。因此区块链的交易数据是有延迟性的。
2、存储数据量少。每个区块只有1至8M。保存数据量有限,如果扩容,则数据同步太费劲。
3、能耗,区块的生成需要矿工进行无数无意义的计算,这是非常耗费能源的。英国一家电力信息网POWER-COMPARE提供的预测数据显示,按照目前比特币挖矿、交易耗电量的增长速度,至2020年比特币耗电量将会与目前全球用电量持平。尽管这一数据备受质疑,但是那些藏在深山老林的“矿场”则实实在在展现了这门生意的耗能景象。
4、区块链的去中心、自治化的特点淡化了国家监管的概念。在监管无法触达的情况下一些,市场的逐利等特性会导致区块链技术应用于非法领域,为黑色产业提供了庇护所。
5、数字货币丢失。区块链技术实现了第一次将资产的所有权、控制权完全交给我们每个人自己受伤,但完整的权利,对应了自己保管资产安全的完整责任。以太坊钱包客户端geth因运行不安全,出现过以太币被盗;除人为盗币风险,用户自身钱包使用不当造成的损失也常有发生。
6、去中心化应用DApp存在缺点
##6. 总结
区块链作为无人管理的分布式数据库,从2009年开始已经运行了8年,没有出现大的问题。这证明它是可行的。
但是,为了保证数据的可靠性,区块链也有自己的代价。一是效率,数据写入区块链,最少要等待十分钟,所有节点都同步数据,则需要更多的时间;二是能耗,区块的生成需要矿工进行无数无意义的计算,这是非常耗费能源的。
区块链按准入机制分三类:公有链、联盟链、私有链
1、公有链:公开透明,开放生态的交易网络。自由加入和退出。世界上任何个体或团队都可以在公有链发送交易,且交易能获得该区块链有效确认。每个人都可以竞争记账权。公有链可以为行业链和私有链提供全球交易网络。典型代表:比特币、以太坊。
2、联盟链:半封闭生态的交易网络,存在对等的不信任节点。通说授权加入和退出。是某个群里或组织内部使用的区块链,需要预先指定几个节点为记账人。每个区块的生成由所有预选记账人共同决定,其他节点可以交易,但是没有记账权。如房地产行业A、B、C、D公司。3、私有链:完全封闭生态的存储网络,仅仅采用区块链技术进行记账,但是所有节点都是可信任的。记账权并不公开,且只记录内部的交易,由公司或个人独享。如某大型集团内部多数公司。
接下来的章节,我们就实现一个简易版的比特币项目。
如果大家感兴趣可以下载比特币源代码:https://github.com/bitcoin/bitcoin