程序员必看区块链技术

上传人:壹****1 文档编号:506732519 上传时间:2023-10-15 格式:DOCX 页数:13 大小:281.22KB
返回 下载 相关 举报
程序员必看区块链技术_第1页
第1页 / 共13页
程序员必看区块链技术_第2页
第2页 / 共13页
程序员必看区块链技术_第3页
第3页 / 共13页
程序员必看区块链技术_第4页
第4页 / 共13页
程序员必看区块链技术_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《程序员必看区块链技术》由会员分享,可在线阅读,更多相关《程序员必看区块链技术(13页珍藏版)》请在金锄头文库上搜索。

1、?阅读数:336干货分享【程序员必看】人才稀缺的区块链,转型 入门需要这四项技能!爱名网? ?2018-03-01 14:40:51?举报C:UserszttDesktop1.jpg区块链(BlockChain),是区块(Block)和链(Chain)的直译,其数据结构 如图1所示,即每个区块保存规定时间段内的数据记录,并通过密码学的方式, 构建一条安全可信的链条,形成一个不可篡改、全员共有的分布式账本。比特币的区块分为区块头和区块体两部分。区块头的大小为80字节,包括4 字节的版本号、32字节(256位)的上一区块哈希值、32字节的Merkle根 节点、4字节的时间戳、4字节的难度值和4字节

2、的随机数。区块体包含10分 钟内选定的交易记录,第一笔交易(coinbase交易)是用于奖励矿工比特币的 特殊交易,由矿工自己添加进区块。区块回区块N+1新区块版本号区版本号版本号上一区顼晴忌位 材巳klw根若点上一区块邮修上一区块哈希值5HA?泌、调节点Merkle IB 节点时间戡时间离时间畿唯度值难度值.一髓机数随机散R易数夜匠块体交易数据反块体交易数据C:UserszttDesktop2.jpg图1?区块链的数据结构示意图基本概念区块链是很多现有技术交叉融合在一起的集成创新。因此,要了解区块链,首先 要了解区块链到底集成了哪些技术。P2P网络如图2所示,P2P(Peer-to-Peer

3、)网络是一种端到端的网络。P2P网络分为 结构化(例如基于Chord的P2P网络)和非结构化的P2P网络(例如 Gnutella)。比特币的区块链采用的是非结构化P2P网络,整个网络没有中心 化的硬件或管理机构,任一节点既是服务端,也是客户端。任何节点只要安装相 应的客户端软件,就能接入P2P网络(例如BT软件),参与区块链的记录 和验证,不超过1/3节点的损坏、退出甚至被植入恶意代码,都不会影响整个 系统的运作。金融系统在机构之间使用一个中心化的账本来追踪资产的流动通过去中心化账本来普代 中心机构认证资产所有权“ 多个机构共同运行和检验, 来防止欺诈和人为操控C:UserszttDeskto

4、p3.jpg 图2?传统中心化系统和P2P网络的拓扑对比图加密算法和数字签名 加密技术分为对称、非对称和哈希(Hash)加密。对称加密是指用同样的密钥 来进行加密和解密,非对称加密是指用一个密钥对来进行加密和解密,哈希加密 主要是通过对数据进行哈希运算,用固定的哈希结果值验证信息是否被篡改。非对称加密在非对称加密技术中,对外公开、分发出去的密钥叫做公钥,不能公开、自己留 存的密钥叫做私钥。公钥加密的,对应的私钥才能解密。反之亦然。如图3所 示。明文 加密 密文 解密 明曳98= 1111 1 俨伽d 187 二日8 88公钥=(7,187)私钥水23167)C:UserszttDesktop4

5、.jpg图3?非对称加密RSA算法的简化示例图 非对称加密算法有RSA、DSA和ECC等种类,区块链使用的是基于椭圆曲 线加密技术的数字签名(ECDSA),具体实现是secp256k1。ECDSA相当于是DSA和非对称加密ECC的结合。相比RSA算法,ECDSA具有计算量 小、存储空间小、带宽要求低等特点。数字签名基于数字签名的通信机制工作原理,如图4所示,发送报文时,发送方用一个 哈希函数从报文文本中生成文件摘要,然后用自己的私钥对摘要进行加密,加密 后的摘要将作为报文的数字签名和报文一起发送给接收方。接收方首先用与发送 方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再用发送方的公

6、 钥来对报文附加的数字签名进行解密,如果得到的明文相同,那么接收方就能确 认传输的文件并未受到篡改,是安全可信的。文样揭茬2就字签乞C:UserszttDesktop5.jpg如邛同 脸可值。始果不同,文1登1_/费会 就盼折凰竺箜户发送文件文件腱图4?数字签名的流程示意图哈希加密 安全哈希算法(Secure Hash Algorithm,SHA)是由美国国家安全局研发,由 美国国家标准与技术研究院(NIST)发布的一系列密码哈希函数,包括SHA-0、 SHA-1、SHA-2和SHA-3等系列。比特币的区块链使用的是SHA-256哈希 加密算法,于2001年发布,属于SHA-2分支。由于SHA

7、256伪随机性的特 点,只要是相同的数据输入,一定会得到相同的结果,如果输入数据稍有变化, 将得到一个千差万别的结果,如图5所示。SHA256还是一个单向不可逆的算 法,即根据一个输入数算SHA256的结果很容易,但根据SHA256的结果反 算输入数几乎是不可能。除此之外,比特币还使用ripemd160算法来生成比特 币钱包的地址。C:UserszttDesktop6.jpg图5?哈希加密的示意图 梅克尔树梅克尔(Merkle)树是区块链的基本组成部分。如果没有梅克尔树,区块链也是 可以运转,但是要在区块头里包含所有交易记录,扩展性方面存在很大挑战。如 图6所示,区块链中的每个区块,由区块头和

8、区块体构成,区块头中含有一个 Merkle根节点的字段,通过对区块体中所有交易记录,以二叉树的形式迭代地 两两拼接、进行哈希操作,可以得到一个最终的哈希值,我们称之为Merkle根 哈希。Merkle根哈希相当于是对区块中所有交易记录进行了一个快照,区块中 交易记录的任意改动都可以通过比较Merkle根哈希而很容易地察觉。Merkle 根哈希主要用于简单支付验证(SPV),在验证某个交易是否在区块中时,也能 极大地减少网络传输成本。区域N区块N + 1新区块貌妃5界Merkle 的根节点哈希值交易的交易的哈希值哈希与有交荔。的 哈希值交易1的 哈希值交易2的 哈泠伯交期?的C:Usersztt

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

10、证明自己的工作量。新区块上一个区块的哈希值#78Aadqddq梅克尔根节点两次SHA256哈希61dldflahjm随机数(不断猜测)30282937302829383028293930282940 30282941 30282942 30282943C:UserszttDesktop8.jpg图7?工作量证明机制示意图除了工作量证明机制(PoW)这类共识机制之外,还有股权证明机制(PoS)、 授权股权证明机制(DPoS)、拜占庭容错机制(BFT)、实用拜占庭容错机制 (PBFT)这些在不可信环境下的共识机制以及要求在可信环境下的共识机制,例如PaxOS和Raft。表1是做了简单的对比。表1?

11、共识机制的简单对比表共识机制PaxosRaftPoWBFTPBFT一致性强一致性强一, 致姓弱一致 性致一弱性弱一致性网络组织主从主从对等对等精导.数据库适配levelDBlevelDBrocksDB允许失败 的节点数1/21/21/31/31/3恶意节点不允许不允 许允许允许允许虚拟机无无无有需要代币无无有有无C:UserszttDesktop9.jpg运行机制 接入网络和验证节点通过安装相应的软件(例如比特币核心),接入区块链。节点启动以后,主 要是在P2P网络上发现邻居节点、链接邻居节点、传递P2P消息和下载区块 链验证。节点可以选择下载全量的区块链进行验证,或者是只下载区块头,通过 M

12、erkle树节点来进行简单支付验证(SPV)。钱包软件可以分为移动钱包、桌面钱包、互联网钱包和纸钱包,都支持保存用户 的私钥,钱包也可以根据私钥是否是种子产生的,而分为决定性钱包和非决定性 钱包,关键区别在于私钥的备份和易恢复性。区块链的存储和接受比特币的区块链使用Berkeley DB (文件数据库)作为钱包数据库,使用 LevelDB(键值数据库)存储区块的索引和UTXO(Unspent Transaction Output, 未开销的比特币交易输出)。节点在启动的时候,将整个区块链的索引从 LevelDB加载入内存。当收到一个新区块时,节点对新区块中的所有交易进行 检测,验证交易格式、交

13、易大小、交易签名、UTXO是否匹配、交易签名、脚 本合规等方面。如果验证成功,检查上一区块头与链头区块哈希值是否一致,如果是一致,则更 新UTXO数据库和回滚交易数据库,如果不是,则将该区块放在孤儿区块池中。 当节点发现网络中存在另一条更长的区块链时,就需要断开现有的区块并对区块 链进行重组。如果验证不成功,会抛弃该区块,继续等待新区块的到来(矿工会 继续计算新区块的数学难题)。区块链的工作量证明计算机制“矿工”角色的节点一直收集网络中广播的交易记录,并致力于计算新区块的数学 难题,即工作量证明。如果其他节点发来的新区块验证成功,节点除了更新 UTXO数据库和回滚交易数据库,节点会立即开始下一

14、个新区块的计算。新区 块的构建优先选取交易内存池中优先级高的交易记录。优先级的计算方式为:如果自己的工作量证明计算成功,节点会第一时间将这个区块广播至整个网络中, 其他节点收到该新区块,如上所述,会进行相应的验证和存储。我源明.形皤购寂球名茨起交舄整个区块链的运转机制如图8所示。揣涓息广陶整广描浦E.广漏阵息F髀-_,让加汹献菅点一 措希疽,堵克建坦:头怕荒宇用 *一计筋效学迪眦. 十I工作址皿 十I头怕荒字网-赧谓S3很,广那消理vtMtrldc眼节舟哈枷.境充国块头粗演字以厚双皿1U貌.X17ffiijEfVlM观诉区说人 一|厩成新区块.销入原席块府寸尺 +J原晞块情不恳尼,或:忻匡块.由人原厚我链制?n形成斯区里.檎入一)形成新电块用入一|J房块槌末宅 +原区块前末尾 qC:UserszttDesktop10.jpg图8?区块链运转机制示意图其他相关脚本语言区块链采用的脚本语言并不是图灵完备的语言,不支持循环,只能进行堆栈式操 作。这种脚本语言的好处是,不允许矿工提交一个死循环的脚本,更注重的是安 全方面的考量,但其扩展能力有限。从以太坊为首的区块链编程平台支持图灵完 备的编程语言,引领区块链跨入2.0时代。由于支持循环等复杂操作,以太坊 用Gas (燃料)机制来防止死循环的出现,确保系统的安全。消息队列比特币区块链采用Zero MQ(ZMQ

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号