区块链大火,让我等吃瓜群众猝不及防。虽然网上文章铺天盖地,比如“一图看懂”系列,但仍然鸡同鸭讲,莫衷一是,并不知其所以然,顶多知道是个同步账本。作为一篇学习总结,我希(尽)望(力)本文能作为一篇普及贴,也能让其他人看懂。所以这里不会深入探讨技术原理,大佬们请绕过。
比特币是世界上第一个通过密码学,而非中央银行发行的电子加密货币。因为其发行总量固定,无中央银行干预,让许多”民主人士“认为这是极为先进的民主思想技术革命。然而去中心化的系统带来了一些新问题:
没有政府背书和资产担保,货币信任、交易真实性成了问题。
每个人都有权了解这个世界在发生什么,信息一旦变化,所有数据库需要同步更新,平等对称。
没有集中决策,为了信息对称,如何达成共识,变成了难题。
三大问题“交易信任”、“数据对称”、“共识达成”
解决办法“非对称加密”、“P2P网络”、“共识机制”
中本聪用以上三种方法,构架出了区块链技术结构,让比特币的发行流通构想得以实现。
比特币(bitcoin)诞生于2008年的一篇论文《A Peer-to-Peer Electronic Cash System》并规定了一些基础协议:
图:比特币协议特点
比特币总量为2100万枚
平均10分钟诞生一个区块。
被写入区块的交易按照手续费高低排优先级
区块的大小只有 1MB,一笔交易大概是500字节左右,因此一个区块最多只能包含2000多笔交易。
挖到新区块的矿工将获得奖励,一开始(2008年)是50个比特币,然后每4年减半,目前(2018年)是12.5个比特币
一笔交易确认需要等待6个区块
比特币网络每10分钟,最多只能处理2000多笔交易,换算一下,就是处理速度为3~7笔/秒。
也就是说,比特币区块链每秒最多只能处理7笔交易,要是交易数据再大点,可能连7笔都达不到。而支付宝一秒处理12万笔交易。这本应在1秒处理的12万笔交易,比特币需要10小时。
每4年奖励减半,那么到了2140年,矿工将得不到任何奖励,比特币的数量也将停止增加。这时,矿工的收益就完全依靠交易手续费了。
这些数据是怎么确定的,众说纷纭。比如一个区块链的大小是1MB,中本聪在设计之初也并未预料到会发展到今天的规模,其本身是一个构想的实验。很多数据并未验证,甚至可以说是拍脑袋定的。
比特币的基础是加密学,如果不知道一笔钱从哪来,是谁的,谁敢拿它当货币呢?非对称加密从技术上解决了可信性问题。这也是这一类数字凭证被称为"加密货币"的原因。
所谓非对称加密,其实很简单:加密和解密需要一把公钥和一把私钥。
交易的第一件事就是你必须拥有自己的公钥和私钥(任何交易所开户或钱包类网站都会给)。
图:比特币交易加密过程通俗版
验证一笔交易是否有效,需要两步:
1.FROM(谁发送的,包括两部分)
Previous tx: 这笔钱的来源账单的id, 验证资金来源。
scriptSig: 这笔交易的签名,就是把交易用私钥做hash
2.TO(谁接受,包括两部分)
Value: 要发多少
scriptPubKey: 接收方的公钥,也就是比特币地址
对于比特币,钱不是支付给个人的,而是支付给某一个地址,没有人知道,那些私钥和地址背后的主人是谁——匿名性。
区块链(blockchain)是比特币使用的一种特殊的数据库,是比特币存在的基础。任何人都可以架设服务器,加入区块链网络,成为一个节点。
图:区块链结构示意图
区块链由一个个区块(block)组成。区块很像数据库的记录,每次写入数据,就是创建一个区块。每个区块包含两个部分,区块头和区块体。
区块头(Head):记录当前区块的元信息。其中包含:
生成时间
上一个区块的 Hash
区块体的Hash
区块体(Body):实际交易数据
其中比较重要的概念是“Hash”。所谓 Hash 是对任意内容,计算出一个长度相同的特征值。而且保证,只要原始内容不同,对应的 Hash 一定是不同的。比特币区块用的SHA256加密算法。
每个区块的 Hash 都是不一样的,通过 Hash 标识区块。
如果区块的内容变了,它的 Hash 一定会改变。
图:区块结构示意图
“挖矿”指的是把网络上待确认的交易写入新区块,并获得比特币奖励的过程。
“矿工”是用GPU等硬件设备进行数据计算的一群人。正是这群人,把交易者的数据一笔一笔记入帐中。“挖矿”的机器叫“矿机”;成规模“挖矿”的场地叫“矿厂”。
回顾挖矿历史,比特币挖矿总共经历了以下五个时代:CPU(20MHash/s)→GPU(400MHash/s)→FPGA(25GHash/s)→ASIC(3.5THash/s)→大规模集群挖矿(3.5THash/s*X)。
图:矿厂
“挖矿”道理其实很简单,想要挖到新区块必算出符合要求的哈希值。你可能会有一个疑问,计算一个哈希值为什么这么难?原来正确的哈希值是有一定要求的:
图:515798号区块信息
1.Difficulty
区块头包含一个难度系数(difficulty),这个值决定了计算 Hash 的难度。举例来说,第515798个区块的难度系数是 3462542391191.56,而第100000个区块链难度可只有14484.162361。
2.Target
区块链协议规定,使用一个常量除以难度系数,可以得到目标值(target)。
Target = Targetmax/ Difficulty 显然,难度系数越大,目标值就越小。
Hash 的有效性跟目标值密切相关,只有小于目标值的Hash 才是有效的。这就是采矿如此之慢的根本原因。
3.Nonce
区块头里面还有一个 Nonce 值,记录了 Hash 重算的次数。
第 515798 个区块的 Nonce 值是213587466,即计算了 2.1 亿次,才得到了一个有效的 Hash,该区块才能加入区块链。
4.难度系数的动态调节
实际上,新的区块有时候几分钟就可能被算出来,有的可能需要几小时。为了保证新区块在10分钟左右的时间内产生,并且考虑到硬件设备的升级,中本聪将Difficulty每2016个区块调整一次以保证新区块平均产生时间在10分钟。
图:分叉示意图
在挖矿的过程中,如果同时生成了两个新区快,链接着同一个上级区块,便形成了分叉。
如果发生这种状况:认定率先达到6个新区块的一条链为有效链(比特币交易的六次确认)。即需要1小时左右。
一个很直观的例子可以说明为何这种经济博弈模式:
超市付款需要排成一队,可能有人不守规矩要插队。超市管理员会检查队伍,认为最长的一条队伍是合法的,并让不合法的分叉队伍重新排队。只要大部分人不傻,就会自觉在最长的队伍上排队。
P2P网络保证每个人的信息同步,任何人都可以成为一个节点。每个节点都包含了整个区块链(目前100G),并且节点之间时刻不停的同步信息。
当你发生了一笔交易。你所在的节点就会把这笔交易告诉另一个节点,直到传遍整个网络。“矿工”搜集各种新发生的交易,将他们写入区块链。一旦写入成功,此“矿工”所在节点的区块链就成了最新版本,其他节点会来复制新增的区块,保证全网同步。
图:P2P节点分布全球,每个节点信息一致
“挖矿”这种行为的本质是寻求达到某一共识,再把信息写入区块的劳动。这种共识决策其实不只比特币所使用的一种方法。
目前主流共识机制目前有:
POW(Proof of Work)、POS (Proof of Stake)、DPOS(Delegated Proof of Stake)
1.POW(Proof of Work)
一句话介绍:干的快,收的越多。
工作量证明协议。比特币所用共识机制。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。
优点:
1)算法简单,容易实现;
2)节点间无需交换额外的信息即可达成共识;
3)破坏系统需要投入极大的成本;
缺点:
1)浪费能源;
2)区块的确认时间难以缩短;
3)新的区块链必须找到一种不同的散列算法,否则就会面临比特币的算力攻击;
4)容易产生分叉,需要等待多个确认;
5)永远没有最终性,需要检查点机制来弥补最终性;
2.POS (Proof of Stake)
一句话介绍:持有越多,获得越多。
权益证明,最早在 Peercoin 系统中被实现,类似现实生活中的股东机制,拥有股份越多的人越容易获取记账权。在POW中,如果用户花费2000美元购买硬件设备,当然会获得两倍算力来挖矿;同样,在POS机制中投入两倍的代币作为押金,就有两倍大的机会获得产生新区块的权利。
优点:
在一定程度上缩短了共识达成的时间;
不再需要大量消耗能源挖矿。
缺点:
还是需要挖矿,本质上没有解决商业应用的痛点;
3.DPOS (Delegated Proof of Stake)
一句话介绍: 选出代表,高效运算
Dan Larimer发明的这种新共识算法被称为股份授权证明机制(DPoS),应用于比特股和Steemit社区。
每个股东按其持股比例选定代表,每个股东将选票授予一名代表。获票数最多的前100位代表加1位随机代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。该模式可以每30秒产生一个新区块,每次单人有序生产区块在正常的网络条件下区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。
优点:高效
缺点:整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的。
为什么会有以太坊呢?它的创始人Vitalik Buterin在《以太坊白皮书》前言部分挑明:因为比特币没有账户状态的概念;而且POW机制效能低,浪费大量时间和资源。而以太坊作为区块链平台将区块链技术的发展带入到 2.0 时代。
以太坊要实现的是一个内置了编程语言(Solidity)的区块链协议,那么理论上任何区块链应用都可以用这门语言进行定义,运行于以太坊的区块链协议之上(该协议的意义与互联网时代的 TCP/IP 协议相似)。这使得区块链应用开发者们高效快速地开发顶层应用,变为可能。
以太坊涉及的问题非常多,很难一言蔽之。这里只对其地位和意义做简要了解。如果感兴趣可以登陆其官网:https://www.ethereum.org/
ICO和其他电子加密货币
图:火币pro上市币种
目前交易所上市的电子加密货币已经不下1000种。那他们是什么?从哪来?什么是山寨币,分叉币,ICO?
山寨币
是我们最初指除比特币以外的加密货币。
分叉币
是由主链分叉出来的新币,比如比特币BTC分叉的比特现金BCH。
ICO是Initial Coin Offering的简称
所有成功的数字货币以及区块链项目无一不是社区项目。常见的ICO里,数字货币和区块链项目向早期爱好者出售项目代币。项目团队通过ICO获取技术开发和市场拓展资金;而项目爱好者通过ICO支持项目,同时也可在对应代币进入交易市场后选择交易退出。
可查的首个ICO来自于Mastercoin项目(现已更名为Omni),其在13年7月时在Bitcointalk(最大的比特币和数字货币社区论坛)上宣布通过比特币进行ICO众筹,并生成对应的Mastercoin代币并分发给到众筹参与者。本质上来说这次ICO是一种以物换物的行为,即参与者用比特币换得Mastercoin项目里的代币。一开始ICO只是数字货币爱好者的一种社区行为,随着数字货币以及区块链的不断发展开始被越来越多人接受并参与。绝大部分ICO都是通过比特币或其他数字货币进行的。
几个著名的ICO案例:
- 2013年7月,Mastercoin(现更名为Omni):可查的最早ICO项目,通过meta-protocol拓展比特币功能,募集5000 BTC。
- 2013年12月,NXT(未来币):首个完整的PoS区块链,曾经神秘的开发者,持续发展的强大社区。ICO神话:募集21 BTC(是的你没看错,21BTC,约等于当时6000美元),市值峰值曾到达过1亿美元。
- 2013年-2014年,Bitshares(比特股):曾经的“数字资产二代币三剑客”之一(另外两个为NXT和CounterParty),国内数字货币界口水之源,毁誉参半。其社区培养了国内大量早期ICO以及数字资产爱好者。
- 2014年7月,Ethereum(以太坊):ICO时募集3万余个比特币曾创下纪录。将智能合约理念推进到极致的区块链项目,让全世界重新认识区块链公有链的项目。近两年最成功的ICO,也是至今为止除比特币以外市值最高的数字货币/区块链项目。近期由于TheDAO事件影响晴雨不定。
- 2015年3月,Factom(公正通):双代币设计,首提存在性证明的区块链商业化以及由此导出的基金会与公司双机构设置。
- 2016年3月,Lisk:以太坊挑战者,利用侧链的Dapp解决方案。
- 2016年5月,TheDAO:等值1.5亿美元破世界纪录的ICO众筹,非典型ICO(其本身不是区块链)。向世界大声宣告智能合约时代到来后一个月即被黑客攻克,在历史上刻下了深深的双重惊叹号 (该项目目前已经失败)。
- 2017年6月, EOS (Enterprise Operation System) :为商用分布式应用设计的一款区块链操作系统。 创始人是比特股创始人、DPOS发明者Dan Larimer,已经创造了一个新的ICO记录——5天内筹集了1.85亿美元。它是以以太坊为募集基础的代币。
细心的观众可能已经发现,这套民主思想的技术,似乎并没有那么公平。如果你有足够资本建立矿场,将会持有大量的比特币(尤其前期难度不高)。资本逐渐慢慢聚拢到算力集中的少数矿场的手里,形成马太效应,去中心化效应减弱。比如现在的比特大陆(一度接近51%的算力),郭宏才也是这样挖矿起家。现在挖矿已经不是小散户玩的起的游戏了。
比特币的区块大小为1M,如果比特币交易越来越多,很多交易就不会在发生后的第一个区块被打包和确认,可能要等好几个区块,甚至更久。比特币交易的拥堵导致了转账速度变慢,手续费也越来越高。
中本聪曾提出了在比特币容量不够用的时候应该怎样进行扩容。白皮书发布之后,他自己在社区留言的第一个问题,就指出了比特币未来的扩容隐患。
区块链技术性强,技术分支也越来越多,这里也只聊了九牛一毛。
从业务上看,应用却已经很多:网易星球、阿里的麻吉宝。然而目前给人的感觉都还是为了做区块链而区块链,需求的还没有真正出现。目前德国、英国、日本等政府认可比特币的价值,和此前加密猫的诞生,推着币价一度走高。不过,区块链和比特币到底是钻石还是郁金香,等待验证还有很多。