使用go语言编写区块链p2p网络译.docx

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用 Go 语言编写区块链 P2P 网络(译)2018 年 04 月 15 日 20:45:38 Sunface 撩技术 阅读数:9543 :本文为 Sunface(孙飞)文章,请注明出处 使用 Go 语言编写区块链 P2P 网络(译) 2018 年 04 月 15 日 20:45:38 Sunface 撩技术 阅读数:9543 :本文为 Sunface(孙飞) 文章, 请注明出处 417 外文发表日期: 2018-04-14 外文链接: 在之前的文章中,我们已经知道了怎么编写 PoW 也知道了 IPFS 怎么工作, 但是有一个致命的缺点,我们的都是中心化的,这篇文章会教你怎么实现一个简单的完全去中心化的 P2P 网络。背景知识什么是P2P 网络在真正的 P2P 架构中,不需要中心化的来维护区块链的状态。例如,当你给朋友比特币时,比特币区块链的“状态”应该,这样你朋友的余额就会增加,你的余额就会减少。在这个网络中,不存在一个权力高度中心化的机构来维护状态(银行就是这样的中心化机构)。对于比特币网络来说,每个节点都会维护一份完整的区块链状态,当交易发生时,每个节点的区块链状态都会得到 在之前的文章中,我们已经知道了怎么编写 PoW 也知道了 IPFS 怎么工作, 但是 有一个致命的缺点,我们的 都是中心化的,这篇文章会教你怎么实现一个简 单的完全去中心化的 P2P 网络。 背景知识 什么是P2P 网络 在真正的 P2P 架构中,不需要中心化的 来维护区块链的状态。例如,当你 给朋友 比特币时,比特币区块链的“状态”应该 ,这样你朋友的余额就 会增加,你的余额就会减少。 在这个网络中,不存在一个权力高度中心化的机构来维护状态(银行就是这样的 中心化机构)。对于比特币网络来说,每个节点都会维护一份完整的区块链状态, 当交易发生时,每个节点的区块链状态都会得到 。这样,只要网络中 51% 的节点对区块链的状态达成一致,那么区块链网络就是安全可靠的,具体可以阅 读这篇一致性协议文章。 本文将继续之前的工作,200 行 Go 代码实现区块链, 并加入 P2P 网络架构。在 继续之前,强烈建议你先阅读该篇文章,它会帮助你理解接下来的代码。 开始实现 编写 P2P 网络可不是开开玩笑就能简单视线的,有很多边边角角的情况都要覆 盖到,而且需要你拥有很多工程学的知识,这样的 P2P 网络才是可扩展、高可 靠的。有句谚语说得好:站在巨人肩膀上做事,那么我们先看看巨人们提供了哪 些工具吧。 喔,看看,我们发现了什么!一个用 Go 语言实现的 P2P 库 go-libp2p!如果你对新技术足够敏锐,就会发现这个库的作者和 IPFS 的作者是同一个团队。如果你还没看过我们的 IPFS 教程,这里, 你可以选择跳过 IPFS 教程,因为对于本文这不是必须的。警告目前来说,主要有两个缺点:1. 安装设置比较痛苦,它使用 gx 作为包管理工具,怎么说呢,不咋好用,但是凑活用吧2. 目前项目还没有成熟,正在紧密锣鼓的开发中,当使用这个库时,可能会遇到一些数据竞争(data race)对于第一点,不必担心,有我们呢。第二点是比较大的问题,但是不会影响我们的代码。假如你在使用过程中发现了数据竞争问题,记得给项目提一个 issue,帮助它更好的成长!总之,目前开源世界中,现代化的 P2P 库是非常非常少的,因为我们要多给一些耐心和包容,而且就目前来说,它已经能很好的满足我们的目标了。安装设置最好的环境设置方式是直接 喔,看看,我们发现了什么!一个用 Go 语言实现的 P2P 库 go-libp2p!如果 你对新技术足够敏锐,就会发现这个库的作者和 IPFS 的作者是同一个团队。如 果你还没看过我们的 IPFS 教程, 这里, 你可以选择跳过 IPFS 教程,因 为对于本文这不是必须的。 警告 目前来说, 主要有两个缺点: 1. 安装设置比较痛苦,它使用 gx 作为包管理工具,怎么说呢,不咋好用,但是 凑活用吧 2. 目前项目还没有成熟,正在紧密锣鼓的开发中,当使用这个库时,可能会遇 到一些数据竞争(data race) 对于第一点,不必担心,有我们呢。第二点是比较大的问题,但是不会影响我们 的代码。假如你在使用过程中发现了数据竞争问题,记得给项目提一个 issue, 帮助它更好的成长! 总之,目前开源世界中,现代化的 P2P 库是非常非常少的,因为我们要多给 一些耐心和包容,而且就目前来说,它已经能很好的满足我们的目标 了。 安装设置 最好的环境设置方式是直接clone 库,然后在这个库的代码中直接开发。 你也可以在自己的库中,调用这个库开发,但是这样就需要用到 了。这里我 们使用简单的方式, 你已经安装了 Go: - go get -d .com/lib

文档评论(0)

136****1820 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档