## :-: 元宇宙是世界的未来
本序列文章将记录一个区块链的开发过程,我们将开发一个完整版本的区块链,软件开发语言是Go语言。
首先声明我的三个观点,两个与共识算法有关:
1、公链才是真正的区块链,未来的世界属于公链;
2、采用PoW共识算法,虽然效率不是那么高,但我认为,区块链的世界一定是“慢世界”,只有“慢”,才有幸福,才有真的创新,而有创新的人生才是幸福的,也才有意义。试问,匆匆忙忙的人生有什么意义?
在开发过程中,我们将对区块链涉及到的技术细节一一进行探讨,也是属于从零开始的探究性的理解和学习。
>本书源码参考了github上多个开源的源码,为遵循开源协议,本项目将一直开源。参考项目一一列举如下(清单将不断更新):
1、[https://github.com/Jeiwan/blockchain\_go](https://github.com/Jeiwan/blockchain_go),修正了里面的不少bug(无力吐槽。。。有些是逻辑错误,有些纯属功能缺陷,有些是注释错误(注释错误很可怕),可能作者也是参考了其他源码编写的,而且可能并没有吃透所参考的源码。我也对该项目提交了部分修订)。
BTW,参考的源码还是整体上比较优雅,不少值得学习的地方,说是the best practice也不为过,另外,配套的技术讲解文章尤其见功力,对区块链技术阐述简明扼要,而且技术阐述与代码相互印证,文字表达能力一流,可见作者对区块链的理解之深。
2、[https://github.com/btcsuite/btcd](https://github.com/btcsuite/btcd),这是基于Go语言实现的一个完整的bitcoin。这是一个活跃的区块链开源项目,贡献者达127人(截止到2020年10月20日),遵循的版权协议是[copyfree](http://copyfree.org/):这是其介绍:btcd is an alternative full node bitcoin implementation written in Go (golang).This project is currently under active development and is in a Beta state. It is extremely stable and has been in production use since October 2013。
3、[https://github.com/stretchr/testify](https://github.com/stretchr/testify),这是一个开源的Go单元测试包。
4、[https://github.com/ethereum/go-ethereum/](https://github.com/ethereum/go-ethereum/),这是以太坊官方主要应用Go语言开发的以太坊,项目相当活跃,贡献者高达547人,最新的release版本是1.9.23(截止到2020年10月21日)。
5、[https://github.com/pengzhaocheng16/simple_bitcoin_go](https://github.com/pengzhaocheng16/simple_bitcoin_go),作者在fork了上面第一个开源项目blockchain_go后,在参考以太坊的实现的基础上,完善了blockchain_go的功能,主要是P2P功能。*
6、[https://github.com/libp2p/go-libp2p](https://github.com/libp2p/go-libp2p)。p2p是非常复杂的,我们将基于libp2p模块来开发区块链所需的p2p功能。
>此外,开发过程中还参考了bilibili上北大肖臻教授的公开课课程:《区块链技术与应用》。肖老师在视频课程上,以比特币区块链为例,对区块链相关技术有较为详尽的讲述,更多告诉我们“为什么”的问题,讲述深入浅出,可谓释疑解惑之好课程。肖老师确是区块链技术上受人尊敬的布道者,由衷钦佩之。
千里之行,始于足下,大厦的地基建设最费周章,今天的慢,是为了以后的快。这个区块链项目,也是后面将要开发的“全球供需匹配区块链”的一个基石。在这之后,我将另外新起一本书,也以序列文章出现,配套开发的代码完成。
全球供需匹配区块链的顶层设计历经近3年断断续续编写和修订,已经初具雏形,目前还在继续广泛阅读各种经济、技术、哲学相关书籍,我也将在本项目结束后,做一个定稿,并公布出来,这之后,我将首先基于全球供需匹配区块链的设计需要,以智能合约实现为目的,对项目的脚本语言进行扩展。所有的设计,都将落实到代码上。
我将确保放到github中的源代码都是有非常完备详尽的注释(尽量注释到每一行),甚至涉及到Go语言的知识点也会解释清楚,确保每一位阅读者以及自己以后随时翻看起来,都能一目了然。
***如果有blockchainer有兴趣,可以和我联系,一起加入并从头打造一个区块链(qq:785909868)。区块链综合了过往的不少技术,其中主要是密码学相关技术、P2P网络、虚拟机技术。全新开发一个区块链,并不是一件工作量浩大到让人却步的工程,它涉及到的技术有限、代码量也有限,而且Go提供了不少可靠的包使用(如libp2p等)。Go语言作为全新的语言,作为下一代的并发编程的C,吸取了包括动态语言在内的很多特性,严谨不失灵活,文法优雅,而且“代码是什么,执行就是什么”。一句话:你值得加入和拥有。***
## :-: 能力有限,潜能无限;专注于兴趣,追求无止境。
- 重要更新说明
- linechain发布
- linechain新版设计
- 引言一
- 引言二
- 引言三
- vs-code设置及开发环境设置
- BoltDB数据库应用
- 关于Go语言、VS-code的一些Tips
- 区块链的架构
- 网络通信与区块链
- 单元测试
- 比特币脚本语言
- 关于区块链的一些概念
- 区块链组件
- 区块链第一版:基本原型
- 区块链第二版:增加工作量证明
- 区块链第三版:持久化
- 区块链第四版:交易
- 区块链第五版:实现钱包
- 区块链第六版:实现UTXO集
- 区块链第七版:网络
- 阶段小结
- 区块链第八版:P2P
- P2P网络架构
- 区块链网络层
- P2P区块链最简体验
- libp2p建立P2P网络的关键概念
- 区块链结构层设计与实现
- 用户交互层设计与实现
- 网络层设计与实现
- 建立节点发现机制
- 向区块链网络请求区块信息
- 向区块链网络发布消息
- 运行区块链
- LineChain
- 系统运行流程
- Multihash
- 区块链网络的节点发现机制深入探讨
- DHT
- Bootstrap
- 连接到所有引导节点
- Advertise
- 搜索其它peers
- 连接到搜到的其它peers
- 区块链网络的消息订发布-订阅机制深入探讨
- LineChain:适用于智能合约编程的脚本语言支持
- LineChain:解决分叉问题
- LineChain:多重签名
- libp2p升级到v0.22版本
- 以太坊基础
- 重温以太坊的树结构
- 世界状态树
- (智能合约)账户存储树
- 交易树
- 交易收据树
- 小结
- 以太坊的存储结构
- 以太坊状态数据库
- MPT
- 以太坊POW共识算法
- 智能合约存储
- Polygon Edge
- block结构
- transaction数据结构
- 数据结构小结
- 关于本区块链的一些说明
- UML工具-PlantUML
- libp2p介绍
- JSON-RPC
- docker制作:启动多个应用系统
- Dockerfile
- docker-entrypoint.sh
- supervisord.conf
- docker run
- nginx.conf
- docker基础操作整理
- jupyter计算交互环境
- git技巧一
- git技巧二
- 使用github项目的最佳实践
- windows下package管理工具