区块链的概念
区块链是一个去中心化的分布式账本数据库,交易记录以区块链的形式存储在所有矿工节点上,而区块链使用技术手段而不需要银行、支付宝等中介机构来保证交易可信、可靠。
全世界每10分钟只会产生一个新区块,记录下10分钟内全世界发生的交易,新区块连接到历史区块链上形成更长的区块链。矿工事先存储区块链,然后费劲计算力寻找新区块并期待链接到历史区块链,因为一旦链接则获得10个比特币的激励。给矿工的激励实际上是因为他存储了区块链,而区块链上包含了有价值、可信的资产信息,就像银行收你的账户管理费和商家的抽成一样。区块链技术解决什么问题
如果说互联网技术解决了人类的信息获取问题,那边区块链技术则解决了人类之间的信任问题。传统人与与人之间的交易,一般都通过一个权威的中心进行,如通过银行转账,通过中介,政府的介入才能进行房屋买卖。而区块链让全网所有的节点共同维护一个账本,每个节点都有一份账本,交易记录一旦确定就无法修改等特点保证了交易记录的真实可靠,无法篡改。所以陌生人之间可以基于区块链技术直接进行各种交易,并保证交易的真实可靠和完全可信
区块链与比特币
比特币的底层技术是区块链。比特币是一种P2P形式的数字货币。但数量有限、上限是2100万,目前已经挖出1500万个左右。所以比特币本质上类似黄金,总的数量有限,每年新增的数量很少,挖取的难度不断加大,全世界不同国家的人都认可接受(当然现在比特币的认可程度比黄金要差很多),没有人可以完全控制它。
使用区块链技术的还有莱特币、以太币、侧链。
区块链与密码学
数字签名
数字签名是对纸上手写签名的数字模拟。它的特性包括:第一,只有你可以制作自己的签名,但任何看到它的人都可以验证其有效性;第二,我们希望签名只与某一特定文件发生联系,因此该签名不能用于表明你同意或者支持另一份不同的文件内容。
数字签名由一下三个算法构成:
- 生成秘钥。产生公钥和私钥。私钥自己保存,用来签名一段消息;公钥人人都可以找到,通过它可以验证你的签名。
- 签名过程。是把一段消息和私钥作为一个输入,对于消息输出是签名。
- 验证过程。通过把一段消息、签名消息、公钥作为输入,返回真或者假,真表示签名消息为真,否则为假。
数字签名的公钥用作公开身份
公钥加密体制虽然很好,但是也有很多潜在的问题。一个最大的问题就是,每个人的公钥都是无意义的一串类似随机数的东西,在加密的时候,加密者怎么知道一个公钥就是接受者的公钥呢?如果加密过程中公钥使用错误,密文就不能被正确的接收者所解密。
有没有一种可能,可以让公钥就是用户的身份呢?所谓身份,就是指一串跟用户相关的有意义的数字,比如身份证号,姓名,邮箱地址等等。加密者在加密的过程中,不需要使用一堆无意义的数字组作为公钥了,而是使用接收者的身份进行加密。举个例子,比如使用邮箱xxx@126.com,有人想给我发送加密密文的话,使用xxx@126.com作为公钥进行加密。这样一来,加密者就不需要像可信第三方询问接收者的公钥了,这为公钥信息的管理提供了极大的便利。
既然这样,那么就可以创建多个公钥作为公开的身份。由于身份多了,也就无法辨别谁是谁便实现了匿名。
描述大部分参考:https://www.zhihu.com/question/26533817/answer/33165735。
需详细了解基于身份的密码体制,请移步到此文。
去中心化身份管理
基于公钥即身份这样一个策略,无需向任何一个中央结构注册身份而可以随时发布多个身份(公钥),需要的时候用私钥来证明真实身份就可以了。
比特币就是利用公钥即身份的机制来实现去中心化的身份管理和匿名性。看起来这是一个完美的方案,但身份虽然不可识别,行为模式本身可以别识别,还是有可能暴露你的行踪。
区块链如何做到去中心化
要做到去中心化:
- 没有中心化的服务器;如何存储交易数据?
- 没有中心化的授信机构,对身份和交易做授信;如何实现相互信任?
- 数据安全保证?
比特币如何解决去中心化的问题:
- 谁在维护交易账本?
所有矿工
- 谁有权利批准哪个交易是正当有效的?
大于等于51%的矿工
- 谁在制造新的比特币?
矿工
- 谁在制定系统变化规则?
有一个开发者社区
- 比特币是如何取得交易价值的?
每笔交易会扣除交易费奖励给产生区块的矿工。
矿工挖得一个新区块,就会获得若干个比特币的奖励。而挖到区块的前提是必须先保持历史的区块链。而挖到的区块只有链到新区块上(这个过程需要51%矿工认可),才能算是奖励到手。
分布式共识
我们知道,每个挖矿节点都竖起耳朵听交易广播,但由于点对点网络下存在较高的网络延迟,各个节点所观察到的事务先后顺序不可能完全一致。因此区块链系统需要设计一种机制对在差不多时间内发生的事务的先后顺序进行共识。这种对一个时间窗口内的事务的先后顺序达成共识的算法被称为“共识机制”。
目前主要有几大类共识机制:Pow、Pos、DPos、Pool、PBFT
共识机制-工作量证明(PoW)
谁先找到一个指定范围的随机数,谁就被公认为挖到了新的区块。
工作量证明的过程
- 每个矿工已知前区块的哈希值;
- 当前区块的交易列表由矿工选取,由于10分钟内每个矿工监听到的交易不一样,所有交易列表不一样;
- 矿工要解的谜题就是找到一个临时随机数,联合前区块的哈希值和当前区块的交易列表经过HASH,得到的输出HASH值正好落在指定范围内;
- 由此可知,解题的过程就是找临时随机数的过程,而输出HASH值的范围就是谜题的难度。
-
另外,每个矿工的当前区块交易列表不一样,以最先找到区块的那个为最终结果,这就是所谓的共识。
通过控制输出HASH值的范围从而控制达成共识的时间,时间越长达成共识的可信度越高而耗费的算力也越大,目前平均每10分钟产生一个区块。
比特币的总数量
全世界每10分钟产生一个区块,需要计算10的20次方个哈希值。挖得新区块奖励起初是50个比特币,每4年奖励减半。用数学方法可算出比特币总量是2100万个。截止目前已经挖出了80%的比特币,到2040年2100万个将全部被挖出。正因为比特币的数量有限,越挖越少导致价格不断攀升。
为什么是2100万个,请参考:http://www.8btc.com/21million00