- 1、本文档共42页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
最近下载
- 2022年北京市(初中毕业学业考试)中考数学真题试卷(含详解).docx VIP
- 医疗机构环境卫生学监测.pptx
- 7-8 曲面及空间曲线的应用举例.ppt VIP
- 2024年中考语文名著阅读考试要点总结与精练 《鲁滨逊漂流记》.docx VIP
- 2024年高考政治时政专题 《经济工作会议》时政背景+理论解析+练习(含解析).docx
- “红旗杯”竞赛总题库-1班组长环境安全健康管理能力考试题库(附答案).docx VIP
- AQT 9011-2019 生产经营单位生产安全事故应急预案评估指南.docx
- 2024年全国高考理综试题带解析-全国卷1.pdf
- 浙江省杭州市临平区2022-2023学年七年级下学期期末历史与社会试题(无答案).docx VIP
- 静脉留置针所致静脉炎的预防与护理研究.docx VIP
文档评论(0)