版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
5区块链通信协议副标题写在这,副标题段落也可以写在这副标题段落也可以写在这副标题段落也可以写在这副标题段落也可以写在这可以写机构名称如果有注释可以写在这里,没有也可以删掉。梧桐区块链实验室WuTongblockchainLaboratoryP2P网络Peer-to-PeerNetworkP2P网络的特点去中心化P2P历史与应用C/SvsP2PP2P与区块链覆盖网络比特币与P2P消息结构、区块结构课程总结REVIEW参考资料REFERENCE课后习题ASSIGNMENT00引导部分区块链需要什么样的网络环境?传统的C/S网络结构有什么特点?P2P网络中无需中央管控节点(去中心化)。知识目标了解P2P网络的基本概念、特点;了解P2P网络的发展历史与典型应用;掌握比特币消息基本格式定义;理解比特币节点发现过程;掌握初始化区块下载过程;掌握比特币区块结构;掌握比特币新区块的产生与区块广播;技能目标掌握比特币消息基本格式定义学习重点比特币系统中的P2P服务学习难点比特币系统中的P2P服务学习目标Learning
Objective01Peer-to-PeerNetworkP2P网络的概念P2P网络(Peer-to-PeerNetwork)即对等网络或对等计算机网络,是一种在对等网络实体(Peer)之间分配资源、任务和工作负载的分布式应用框架;在P2P网络中每台计算机既是服务器,又是客户端;Peer(Node):可对外提供资源服务的网络实体的抽象;去中心化:网络中无需中央管理节点的存在。什么是P2P网络?P2P网络的特点可扩展性P2P网络的自组织、自配置和自动负载均衡特性;破解了C/S模式下服务器的性能瓶颈问题。健壮性服务和资源分散于各个节点,不经由第三方,无明显弱节点。高性价比有效利用分散于网络中大量节点上的空闲资源私密性信息传输无需通过集中节点,提高了匿名通信的灵活性和可靠性。均衡性资源和处理能力分布于多个节点,避免网络流量过于集中。P2P网络的发展历史20世纪80年代PC和TCP/IP协议诞生Internet发展21世纪第1个10年P2P技术获得大规模应用1999年NapsterZooKeeper、MemCashedGemFire,Bitcoin20世纪60-70年代计算机网络诞生网络规模小、结构简单计算机之间可直接通信20世纪90年代计算机和网络发展的黄金时期网络规模扩大服务端处理能力不足数据库软件兴起P2P软件的类型文件内容共享和下载及P2P存储Napster、BitTorrent、eMule、迅雷实时音/视频数据流的分发PPStream、PPLive、QQLive计算能力共享SETI@home、Avaki、PopularPower即时通信与信息共享ICQ、QQ、MSNMessenger、Skype基于P2P技术的协同处理与服务共享平台JXTA,Groove等云计算核心技术支持Zookeeper区块链应用系统Bitcoin,Hyperledger大数据核心技术Memcached、Hazelcast、GemFire隐私保护TorbrowserP2P与C/S同时存在,相互融合和集成去中心化系统中,保留服务器:改善系统接入性能加快搜索和响应速度辅助身份认证应用层的一部分:P2P网络通常构建在更底层的物理网络之上,并为特定应用提供支持,典型的覆盖网络(OverLayNetwork)。覆盖网络:建立在另一个网络上、并为更高层应用提供支持的中间层网络。引入中间层的目的:更上层应用无需过多考虑与网络有关的对等实体发现、直接通信、数据安全、资源定位、网络标识及其分配、节点加入与退出、负载均衡等问题;使应用系统开发可以集中精力在业务功能上。P2P与区块链区块链系统最核心的服务:P2P网络、分布式账本、共识服务、智能和约等。P2P网络一般位于系统的最底层,常与分布式账本紧密集成、并直接支持共识和智能合约等服务的实现。P2P网络实现了区块链系统的去中心化。P2P与区块链(续)02BitcoinandPeer-to-PeerNetwork比特币系统中的P2P服务P2P:区块链系统中的基础支撑性层次,直接支持账本数据的分布式存储和上层共识算法的实现;比特币全部功能节点相互协作组成一张P2P网,并传递区块(Block)和交易(Transaction);注意:仅支持简单支付验证(SPV)的轻钱包应用节点也可使用同样的协议连接到全功能节点进行支付。比特币与P2P起始字符串:奇异数(MagicNumber),用于在数据流中标识下一个消息的开始命名名:ASCII形式的命令码,命令内容在消息负载中负载大小:以字节为单位,负载的长度校验:校验值比特币消息(Message)基本格式起始字符串char[4]命名名char[12]负载大小uint32_t校验char[4]消息负载(Payload)常用消息的功能Block不同节点传输的数据块GetHeaders请求区块的头列表Addr网络连接信息PongPing命令的响应GetBlocks返回所存区块的哈希值列表GetData请求数据对象Headers区块头的列表GetAddr请求其它节点地址信息Reject通知上一消息被拒绝Tx发送交易Ping查询节点是否正常Version自己的版本消息VerAck版本命令的响应消息1用户比特币程序启动时,并不知道任何活跃的全功能节点的IP地址;2为了接入网络和发现这些地址,程序会向DNS地址(种子)发出查询请求;3DNS服务器返回的响应包(DNS的A记录)中会包含一个或多个全功能节点的IP地址节点发现过程节点如何加入网络?DNS种子服务器例子用Linux的dig命令查看某个DNS种子服务器返回的信息DNS种子服务器返回的信息DNS返回的结果没有经过验证,恶意的种子操作者或者中间人攻击者可能返回一些被攻击者控制的节点的IP地址;恶果:把用户程序完全控制在攻击者隔离的网络环境中返回一些伪造的交易和区块DNS返回结果可以完全信任吗?程序发现可用的全功能节点并成功连接后,该节点会回送若干地址信息,如其它节点(Peer)的IP地址、端口等数据。考虑到节点经常会脱离网络和IP发生变化,程序在启动的时候可能需向不同节点多次尝试发起连接直到获得一次成功的连接为止。后果是增加用户接入网络的时间。为了缩短网络延时,程序可以缓存历史上成功连接的节点信息,并允许跳过DNS查询直接尝试连接以减小接入延迟。节点发现以后的操作1.客户端程序通过发送Version消息到远端对等节点(Peer)表示连接成功,该消息包括当前节点的版本消息、区块和当前的时间;2.对等节点也会返回它的Version消息;3.两个节点互发VerAck消息给对方表示连接建立。连接到节点节点如何定位所需访问的区块?节点:仓库区块:货物区块的定位依赖于分布式哈希规则网络节点也按照相同的哈希规则定位所需访问的区块初始化区块下载比特币P2P网络中的全功能节点兼有的功能:系统接入区块存储访问处理一个新加入比特币P2P网络的全功能节点的工作起点:初始区块下载(IBD)或初始同步:借助P2P网络的对等通信功能从网络上其它节点下载若干区块;通常要求下载并验证此时网络中最长、最正确的区块序列(区块链),该链从编号为1的区块开始;然后方可加入网络、能够验证未确认的交易或新近挖掘出的区块。初始化区块下载(续)方法1:块优先(Blocks-first)方法2:块头优先(Headers-first)初始区块下载过程可以保证节点状态与网络中其他节点是协调一致的。当节点脱离网络太久(24小时)时,节点通常也会再次启动IBD过程以保证本地数据与网络的一致性。初始化区块下载的重要性初始化区块下载策略:1块优先GetBlocks消息结构:typeMsgGetBlocksstruct{ ProtocolVersionuint32 BlockLocatorHashes[]*chainhash.Hash HashStopchainhash.Hash}来源://btcsuite/btcd/wire消息命令的一个实例:初始化区块下载(续)70002协议版本01哈希数量6fe28c0ab6f1b3…d619000…哈希值100000000000000000...截止哈希初始化区块下载策略:2块头优先先尝试下载链中区块的描述头结构,然后以并行方式连接多个网络节点下载区块。GetBlocks消息结构:typeMsgGetHeadersstruct{ ProtocolVersionuint32 BlockLocatorHashes[]*chainhash.Hash HashStopchainhash.Hash}来源://btcsuite/btcd/wire消息命令的一个实例:初始化区块下载(续)70002协议版本01头哈希数量6fe28c0ab6f1b3…d619000…头哈希值00000000000000000...截止哈希多笔交易的数据需要合成一个区块进行存储、传输和在不同节点间同步,多个节点可竞争打包权并保证区块链的唯一性。打包:将一段时间内的多笔交易打成一个新的区块链接到系统中已有的区块链上。打包过程伴随着小额比特币的奖励,也称为“挖矿”。新区块的产生与区块广播当一个矿工节点发现新的区块后,它需要将此区块在全网尽可能大的范围内广播。1.区块主动推送(UnsolicitedBlockPush)向带有新区块的每个完整节点对等方发送一条“block”消息;矿工可以通过这种方式合理地绕过标准中继方法,因为它不知道其对等方已经拥有刚发现的块。2.标准区块中继(StandardBlockRelay)不主动推送;
发出Inv消息,在Inv中携带新区块消息;由收到Inv消息的节点把区块取走。比特币的两种广播方式区块一旦产生,即永久性地以只读方式存在于系统中。任何对原始区块数据的更改,都会导致区块哈希值无法匹配最初验证提交时保存在区块内部的哈希值区块的哈希值是区块的唯一标识同时也是在网络中定位区块的标识区块的只读属性保证不可篡改区块的结构03课程总结学习内容添加你的副标题文字说明及简要标题文字概述P2P网络的基本概念、特点;P2P网络的发展历史与典型应用;比特币消息基本格式定义;比特币节点发现过程;初始化区块下载过程;比特币区块结构;比特币新区块的产生与区块广播;P2P网络的基本概念、特点去中心化可扩展健壮性高性价比私密性均衡性比特币vsP2P比特币消息格式节点发现连接节点初始区块下载新区块产生与广播总结课堂提问判断题1
块优先初始化策略会先尝试下载链中区块的描述头结构,然后以并行方式连接多个网络节点下载区块。选择题2什么是引导节点?(单选)A永不崩溃的超节点B监视垃圾邮件攻击的节点C从头开始生成自己的对等列表的节点D将其他节点引入P2P网络的节点3.(多选)04参考资料参考资料HowabitcointransactionworksBitcoin‘sP2PNetwork
/bitcoins-p2p-network/BitcoinCore0.11:P2PNetwork,aBitcoinWikiwalkthroughofBitcoinCore'sP2Pnetworkingstack(2018)AnonymityPropertiesoftheBitcoinP2PNetwork,showinghowpassiveobserverscanusestatisticaltechniquestodeanonymizeBitcointransactionsbymonitoringP2Ptraffic,byGiuliaFantiandPramodViswanath(2017)InitialBlockDownloadBitcoinDevguide:P2PNetwork
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年初中《无题相见时难别亦难》李商隐爱情教案
- 年产60吨玻璃胶技改项目环境影响报告表
- 杭州安费诺飞凤通信工业CT迁扩建项目环境影响报告表
- 小学五年级冀教版小数除法计算能力训练卷
- 2025年软件开发行业后端工程师工程师后端开发测试手册
- 2026年三高人群合理膳食与体重管理课件:平衡膳食宝塔
- 基于蚁群算法的组合优化学习结题报告
- 基于计算机视觉的工程质量智能检测指南
- 动物生物化学1绪论
- 妇科儿科疾病推拿治疗
- 直播间合伙合同协议
- 老子人物简介
- 槽车装卸作业安全操作规程(2篇)
- 短缺药品管理制度
- 《土壤学》试题库
- 品管圈QCC成果汇报降低脑卒中患者睡眠节律紊乱发生率
- 合同作废协议模板范文(2024版)
- 弯制法制作卡环及支架
- 2022年度山西省中小学教师信息素养提升实践活动
- 山东大学齐鲁医院诊断证明
- 文化创意产品设计PPT完整全套教学课件
评论
0/150
提交评论