加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 运营中心 > 建站资源 > 经验 > 正文

中国区块链商学院:区块链基础知识

发布时间:2018-10-24 04:08:12 所属栏目:经验 来源:中国区块链网
导读:副标题#e# 区块链(BlockChain),是区块(Block)和链(Chain)的直译,其数据结构如图1所示,即每个区块保存规定时间段内的数据记录,并通过密码学的方式,构建一条安全可信的链条,形成一个不可篡改、全员共有的分布式账本。 比特币的区块分为区块头和区

工作量证明机制,简单地说,就是一种共识机制,用来确认你是否做过一定量工作的证明。比特币的区块链主要是依托计算数学难题来衡量工作量。每个区块,当选定一定数量的交易记录之后,填充版本号、时间戳、难度值,生成相应的Merkle根哈希。很容易看到,这些数值在选定交易记录以后,都是确定的,唯一能够改变的就只有随机数(Nonce)这个值。如图7所示,系统根据难度值,要求计算整个区块头的两次SHA256算法,得到的哈希结果要小于一个阈值。根据前面描述的SHA256算法的伪随机性,只有通过不断地尝试和枚举,才能找到相应的随机数,证明自己的工作量。

中国区块链商学院:区块链基础知识

图7 工作量证明机制示意图

除了工作量证明机制(PoW)这类共识机制之外,还有股权证明机制(PoS)、授权股权证明机制(DPoS)、拜占庭容错机制(BFT)、实用拜占庭容错机制(PBFT)这些在不可信环境下的共识机制以及要求在可信环境下的共识机制,例如PaxOS和Raft。表1是做了简单的对比。

中国区块链商学院:区块链基础知识 

表1 共识机制的简单对比表

运行机制

接入网络和验证

节点通过安装相应的软件(例如比特币核心),接入区块链。节点启动以后,主要是在P2P网络上发现邻居节点、链接邻居节点、传递P2P消息和下载区块链验证。节点可以选择下载全量的区块链进行验证,或者是只下载区块头,通过Merkle树节点来进行简单支付验证(SPV)。

钱包软件可以分为移动钱包、桌面钱包、互联网钱包和纸钱包,都支持保存用户的私钥,钱包也可以根据私钥是否是种子产生的,而分为决定性钱包和非决定性钱包,关键区别在于私钥的备份和易恢复性。

区块链的存储和接受

比特币的区块链使用Berkeley DB(文件数据库)作为钱包数据库,使用LevelDB(键值数据库)存储区块的索引和UTXO(Unspent Transaction Output,未开销的比特币交易输出)。节点在启动的时候,将整个区块链的索引从LevelDB加载入内存。当收到一个新区块时,节点对新区块中的所有交易进行检测,验证交易格式、交易大小、交易签名、UTXO是否匹配、交易签名、脚本合规等方面。

如果验证成功,检查上一区块头与链头区块哈希值是否一致,如果是一致,则更新UTXO数据库和回滚交易数据库,如果不是,则将该区块放在孤儿区块池中 。当节点发现网络中存在另一条更长的区块链时,就需要断开现有的区块并对区块链进行重组。如果验证不成功,会抛弃该区块,继续等待新区块的到来(矿工会继续计算新区块的数学难题)。

区块链的工作量证明计算机制

“矿工”角色的节点一直收集网络中广播的交易记录,并致力于计算新区块的数学难题,即工作量证明。如果其他节点发来的新区块验证成功,节点除了更新UTXO数据库和回滚交易数据库,节点会立即开始下一个新区块的计算。新区块的构建优先选取交易内存池中优先级高的交易记录。优先级的计算方式为:

如果自己的工作量证明计算成功,节点会第一时间将这个区块广播至整个网络中,其他节点收到该新区块,如上所述,会进行相应的验证和存储。

整个区块链的运转机制如图8所示。

中国区块链商学院:区块链基础知识 

图8 区块链运转机制示意图

其他相关

脚本语言

区块链采用的脚本语言并不是图灵完备的语言,不支持循环,只能进行堆栈式操作。这种脚本语言的好处是,不允许矿工提交一个死循环的脚本,更注重的是安全方面的考量,但其扩展能力有限。从以太坊为首的区块链编程平台支持图灵完备的编程语言,引领区块链跨入2.0时代。由于支持循环等复杂操作,以太坊用Gas(燃料)机制来防止死循环的出现,确保系统的安全。

消息队列

比特币区块链采用Zero MQ(ZMQ)作为消息分发和消息队列管理工具。与很多人熟悉的RabbitMQ相比,ZMQ不像传统意义的消息服务器,更像一个底层的网络通信库,在多个线程、内核和主机盒之间弹性伸缩,在Socket API之上将网络通信、进程通信和线程通信抽象为统一的API接口。

挖矿设备和算法演进

挖矿设备从支持复杂指令(CISC)、适合串行计算的CPU矿机时代,经由基于众核体系、适合并行简单计算的GPU挖矿和低功耗却价格昂贵的FPGA挖矿,逐渐向集约高速的ASIC矿机和规模效应的矿池演进。

基于工作量证明机制的算法,容易导致矿工算力集中的问题。有人将这种“中心化”的责任归咎于SHA256算法。此时,基于SCRYPT算法的莱特币(Litecoin)进入了人们视线,其占用内存多、计算时间长、并行计算困难的特点,限制了矿工的“军备竞赛”。莱特币的成功催生了更多算法的交叉融合,衍生出串联算法(夸克币)、并联算法(HeavyCoin)和多用途算法(在工作量证明的同时,寻找大素数的素数币,PrimeCoin)。

【编辑推荐】

  1. 工信部将积极推动区块链标准建设
  2. 百度正式发布“超级链”,区块链项目组并入百度搜索
  3. 区块链的未来是单链分层还是多链跨链?
  4. 区块链:EOS是一场灾难的13个理由
  5. 黑客频频攻击区块链安全软肋,如何保证区块链的安全?
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读