比特币——区块链

本文隶属于分类

互联网

广告推荐

技术交流学习或者有任何问题欢迎加群

编程技术交流群 : 154514123 爱上编程      Java技术交流群 : 6128790  Java

区块链:一种实时记录全部交易的去中心化公开数据库,在区块链上进行支付时全网计算机共同查询区块链数据,共同验证这笔支付交易是否有效。确认支付后将写入区块链并产生一条不可篡改记录。
【行研】从一到N,掘金区块——区块链行业研究报告
区块:区块大小是1M,包含父哈希、Merkle根、时间戳、难度目标、随机数。程序上近似每10分钟增加一个BLOCK,block就是当前账本区块,如果矿工运算高于这个时间则下次下调难度,如果低于这个时间则增加难度,难度由当前算力确定。
区块链:每一个网络中的用户不需要完整的blockchain,不过拥有完整blockchain数据的节点数算是一条blockchain的健康程度的指标之一。
奖励:这个奖励初始是50每隔4年减半一次,到2140年最后一次减半后,奖励的币太小将停止新币的奖励,全网比特币的数量被维持在2100万。
分叉处理:由于网络位置不同,不同区域收到的广播hash不同,通过延长链,确定使用的区块链。
可能的问题:(1)更改交易信息:重新计算该交易记录后的所有区块,并且追上区块链进度。
                 (2)控制区块链生成:51%的计算能力。
核心技术: 
区块链主要解决的交易的信任(基于密码学)和安全问题,因此它针对这个问题提出了四个技术创新:
第一个叫分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。不同于传统的中心化记账方案,没有任何一个节点可以单独记录账目,从而避免了单一记账人被控制或者被贿赂而记假账的可能性。另一方面,由于记账节点足够多,理论上讲除非所有的节点被破坏,否则账目就不会丢失,从而保证了账目数据的安全性。
第二个叫做对称加密和授权技术,存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。
第三个叫做共识机制,就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。以比特币为例,采用的是工作量证明,只有在控制了全网超过51%的记账节点的情况下,才有可能伪造出一条不存在的记录。当加入区块链的节点足够多的时候,这基本上不可能,从而杜绝了造假的可能。
注:四种共识机制
1、Pow工作量证明,就是大家熟悉的挖矿,通过与或运算,计算出一个满足规则的随机数,即获得本次记账权,发出本轮需要记录的数据,全网其它节点验证后一起存储;
优点:完全去中心化,节点自由进出;
缺点:目前bitcoin已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全;挖矿造成大量的资源浪费;共识达成的周期较长,不适合商业应用

2、Pos权益证明,Pow的一种升级共识机制;根据每个节点所占代币的比例和时间;等比例的降低挖矿难度,从而加快找随机数的速度。
优点:在一定程度上缩短了共识达成的时间
缺点:还是需要挖矿,本质上没有解决商业应用的痛点

3、DPos股份授权证明机制,类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。
优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证
缺点:整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的

4、Pool验证池,基于传统的分布式一致性技术,加上数据验证机制;是目前行业链大范围在使用的共识机制
优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证;
  缺点:去中心化程度不如bictoin;更适合多方参与的多中心商业模式

最后一个技术特点叫智能合约,智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息(包括医疗信息和风险发生的信息)都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔。

交易过程:(1)新的交易向全网进行广播
              (2)每一个节点都将收到的交易信息纳入一个区块中
              (3)每个节点都尝试在自己的区块中找到一个具有足够难度的工作量证明
              (4)当一个节点找到了一个工作量证明,它就向全网进行广播
              (5)当且仅当包含在该区块中的所有交易都是有效的且之前未存在过的,其他节点才认同该区块的有效性
              (6)其他节点表示他们接受该区块,而表示接受的方法,则是在跟随该区块的末尾,制造新的区块以延长该链条,而将被接受区块的随机散列值视为先于新区块的随机散列值。
只验证是否有能力履行该交易,而不验证交易的真实性。真实性由公私钥保证。

目前已知的一些区块链技术应用大致有这三类:
  1. 公开区块链(public blockchain) 例子:比特币,Ethereum Frontier。公开区块链上的数据所有人都可以访问,所有人都可以发出交易等待被写入区块链。共识过程的参与者(对应比特币中的矿工)通过密码学技术以及内建的经济激励维护数据库的安全。公开区块链是完全的分布式。
  2. 协作区块链(federated blockchain) 例子:Hyperledger以及德勤等会计所尝试的审计系统。参与区块链的节点是事先选择好的,节点间很可能是有很好的网络连接。这样的区块链上可以采用非工作量证明的其他共识算法,比如有100家金融机构之间建立了某个区块链,规定必须67个以上的机构同意才算达成共识。这样的区块链上的数据可以是公开的也可以是这些节点参与者内部。部分意义上的分布式。
  3. 私有区块链(private blockchain) 例子:Eris Industries。参与的节点只有用户自己,数据内的访问和使用有严格的权限管理。近期部分金融机构公布的内部使用的区块链技术大都语焉不详,不过很可能都在这个范围。


比特币系统主要存在5大问题:总节点规模较小,尚未经历大规模的广播风暴、交易确认速度变慢、区块同步速度慢、日处理交易峰值数有限、系统迭代更新进展缓慢。

技术交流学习或者有任何问题欢迎加群

编程技术交流群 : 154514123 爱上编程      Java技术交流群 : 6128790  Java

广告推荐

讨论区