深入浅出区块链
陈浩
元界 CTO
40685 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
深入浅出区块链
15
15
1.0x
00:00/00:00
登录|注册

第35讲 | 搭建你的迷你区块链(设计篇 )

使用Mongoose库
boost 1.56+ (datetime)
cmake
gcc或clang
使用SHA-256
缓存交易的一块交易缓冲区
公钥直接算作地址
包含输入、输出结构
包含前向区块哈希、默克尔根哈希、时间戳、难度目标、Nonce值和版本号
选择PoW作为共识算法
使用SQLite 3作为持久化存储
使用OpenSSL库中的RSA算法
WebSocket
提供基础日志
提供挖矿的功能
提供余额查询的功能
提供交易查询的功能
提供发送交易的功能
提供创建公私钥对的功能
提供P2P节点发现和同步区块的功能
开发环境和测试环境搭建
区块数据结构设计
详细功能拆分
技术选型
划定实践范围
使用Docker搭建容器集群
构造简单且容易测试的分布式网络环境
轻量级Httpserver
工具链
使用C++实现
哈希计算
内存池
地址设计
交易体设计
区块头设计
防止双花交易
格式化输出交易
区块持久化存储
基础日志
交易共识
区块共识
挖矿
余额查询
交易查询
发送交易
公私钥对
P2P网络
共识算法
数据库存储
账户加密部分
P2P网络模块
构建全节点客户端
总结
测试环境搭建
开发环境搭建
区块数据结构设计
详细功能
技术选型
目标和范围
搭建迷你区块链

该思维导图由 AI 生成,仅供参考

程序员的天赋技能就是通过代码实践自己的想法,完成一个作品会有相当的成就感。
今天我们终于也来到了实践环节。我将以 C++14 的代码为例,和你分享设计并实现一个迷你区块链的例子。

目标和范围

首先我们要知道达成的目标,根据目标划定工作范围。
考虑到我们无法搭建一个类似比特币的庞大 P2P 网络,也没有太多精力实现一个真正意义上的完整功能的全节点钱包,而且完整的全节点过于复杂,会让学习者迷失在细节中。
所以我们的目标是:构建一个包含仅有基础功能的全节点客户端,它可能没有太炫酷的 UI 页面,也没有复杂的命令,它们可以提供下面的功能。
提供 P2P 节点发现和同步区块的功能;
提供创建公私钥对的功能;
提供发送交易的功能;
提供交易查询的功能;
提供余额查询的功能;
提供挖矿的功能,在任意地址上都可以发起单机挖矿;
提供基础日志,方便跟踪监视。
以上 7 个功能基本涵盖了一个区块链全节点的主要功能,但是,由于我的时间有限,代码不能全部实现,主要是讲解设计和实现思路。后续我会逐渐完善代码,你也可以一起参与。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

使用C++14设计和实现迷你区块链的例子是一项技术挑战,本文详细介绍了搭建迷你区块链的设计思路和实现方法。作者明确了搭建迷你区块链的目标和范围,包括P2P节点发现、同步区块、创建公私钥对、发送交易、交易查询、余额查询、挖矿和基础日志等功能。技术选型方面选择了WebSocket、OpenSSL库中的RSA算法、SQLite 3和PoW共识算法。文章还详细介绍了区块数据结构设计,包括区块头和交易体的设计,地址设计,内存池和哈希计算等内容。读者可以通过实际操作来进一步学习和完善代码,因此具有很高的参考价值。文章还提供了代码开源地址,方便读者深入学习。 在开发环境搭建方面,文章介绍了使用C++实现迷你区块链的复杂性,以及所需的工具链和库的支持。在测试环境搭建方面,建议购买ECS节点和使用Docker来构建容器集群,以便部署节点并进行测试。总的来说,本文提供了全面的实践指导,从技术选型到功能设计,再到开发和测试环境的搭建,为读者提供了全方位的指导和思路。 对于想要了解区块链技术并进行实际搭建的程序员来说,本文是一份宝贵的参考资料。文章内容涵盖了区块链的核心技术概念,以及具体的技术选型和功能设计,为读者提供了全面的指导和实践思路。文章中还提供了相关链接,方便读者进一步学习和探索。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出区块链》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(14)

  • 最新
  • 精选
  • Nebula
    老师可以推荐一下java的迷你区块链吗,最好是开源

    作者回复: 可以啊,2019年上半年太忙了,cpp版还没空更新。实际上python版本的是最好理解的,我考虑后续会逐渐上设计图纸和模块说明,希望做成社区的形式,大家一起参与维护tinychain的各个版本,也可以加深理解。

    2019-06-27
    3
    9
  • Eric
    陈老师,什么时候把剩余的功能都实现了?

    作者回复: 牛市来的时候我就有时间了。 其实一直想着来着,还有python各种版本的,如果是社区一起开发相信会好很多。

    2019-09-09
    3
  • 钰湚—付晓岩
    陈老师,如果想在自己的笔记本上搭建一个区块链模拟网络,需要什么配置?🙂

    作者回复: 正常配置即可,有docker就行

    2018-06-13
    3
  • Eric
    陈老师,比特币网络是由无数个全节点钱包组成的.这种说法对么?

    作者回复: 基本上对 实际上钱包也出现了各种版本,原则上只要符合比特币目前的协议即可。 这套协议网络就是比特币网络。

    2019-09-09
    2
  • 沃野阡陌
    老师,请问什麽是共享CDN挖矿?

    作者回复: 你好,这个是营销概念,没有共通性。

    2018-06-16
    2
  • 行者
    老师,讲下默克尔根哈希吧,对这个挺困惑的

    作者回复: 好的,我会在个人私有专栏里写

    2018-06-14
  • 麋鹿在泛舟
    终于等到了

    作者回复: 感谢支持,嘻嘻

    2018-06-14
  • leoxie
    读的人几个技术的英文单词估计搞不懂
    2018-07-19
    3
  • Dustin Volz
    看见c++就很慌
    2021-04-30
  • 栐哥
    请问开发区块链的APP是用node. js的什么IDE呢?
    2020-01-10
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部