当前位置: 首页 > news >正文

区块链练手项目(持续更新)

1、前言

读研期间,我的研究方向聚焦于区块链与联邦学习的交叉领域,具体涉及同态加密、梯度剪枝、差分隐私等技术的融合应用。区块链技术体系庞大且内容繁杂,对初学者而言,若缺乏专业指导,不仅入门困难,连合适的源码都难以寻觅,很容易在起步阶段就陷入困境。​
回想当年,我独自负责一个省级项目时,从对区块链一无所知的状态,到最终顺利毕业,这一路走得异常艰辛。近期恰好要开发一个群体学习相关的项目,便借此机会重新梳理和回顾相关知识。

​区块链本身涵盖的知识点多、系统复杂度高,我不敢自诩为这方面的 “大神”,但希望能整理出一份适合初学者入门的教程。这既是为了记录笔记、防止遗忘,也是想分享自己的经验,帮助后来者少走弯路。即便已有过学习经历,重新拾起来依旧觉得不易,主要有几方面原因:​

一是资料杂乱且难查询,缺乏系统化的入门资源;二是源码项目规模大,对初学者不够友好;三是区块链与联邦学习结合的源码极度稀缺,即便存在少量案例,学习门槛也很高;四是区块链代码运行难度大,过程中容易出现各种难以解决的错误。

刚好现在有此机会,因此,我计划在这个专栏中,先重温区块链的核心知识,再深入探讨区块链与联邦学习的融合应用,最后梳理密码学相关内容。而密码学领域充斥着大量公式,往往即便有源码也难以理解,更别提很多内容根本没有配套代码。要将这几个领域有机结合,确实颇具挑战性,需要扎实的技术功底。

算下来,我在这个领域学习已有三年,跨专业攻读计算机学位的背景让我付出了更多努力,但至今仍觉得自己只是堪堪入门。希望这个专栏能留下我的学习轨迹,也真正能帮到大家少走一些弯路

但是我平时比较忙,所以笔记的排版上可能会有些问题,有些东西可能来不急规划,希望谅解。

1.1 区块链适合入门的一些项目

区块链目前多种语言可以实现,一般选择的是go,以及c++,当然java和pyhon的也有,初学者建议go语言,因为go语言相对简单一些,好多主流的区块链用的也是go语言。

1.go

下边是适合初学者的一些go语言项目

转载:https://www.flysnow.org/2019/11/08/golang-bitcoin-blockchain-sources

1.1.1、naivechain

地址:https://github.com/kofj/naivechain

推荐优先级:★★★★★
特点:极简实现,包含区块、区块链基础结构、P2P 节点连接及模拟挖矿等核心功能,仅 300 行代码,易于快速上手。

1.1.2 gochain

地址:https://github.com/crisadamo/gochain

推荐优先级:★★★★
特点:在基础概念之上增加了工作量证明(POW)、交易添加等模块,复杂度适中,适合理解进阶功能。
blockchain

地址:https://github.com/izqui/blockchain

推荐优先级:★★★★
特点:功能覆盖全面,包含 Base58 编码实现、哈希树(Merkle Root)等细节,贴近实际场景的技术选型。

1.1.3blockchain_go

地址:https://github.com/Jeiwan/blockchain_go

推荐优先级:★★★★
特点:侧重原理演示,代码注释详尽,对区块链核心流程的拆解清晰,适合系统性学习。

研究性质的简单实现,主要基于作者的几篇研究文章:

Basic Prototype
Proof-of-Work
Persistence and CLI
Transactions 1
Addresses
Transactions 2
Network
以上都是英文的,不过有人翻译,可以参考这个链接查看,这是一步步很不错的入门学习项目了。

https://ethfans.org/posts/building-blockchain-in-go-part-1
https://ethfans.org/posts/building-blockchain-in-go-part-2
https://ethfans.org/posts/building-blockchain-in-go-part-3
https://ethfans.org/ajian1984/articles/building-blockchain-in-go-part-4
https://ethfans.org/ajian1984/articles/building-blockchain-in-go-part-5
https://ethfans.org/ajian1984/articles/building-blockchain-in-go-part-6
https://ethfans.org/ajian1984/articles/building-blockchain-in-go-part-7

1.1.5、gocoin
https://github.com/piotrnar/gocoin

看这个项目的介绍:

Full bitcoin solution written in Go (golang)

比特币的都有了,钱包,交易,客户端,可以部署运行。

区块链技术肯定是个好技术,而且我们又具备Golang的优势,所以可以好好的看下,了解下。

2 java的

https://gitee.com/luckytuan/dce-blockchain

3、C++的

1、FISCO BCOS

这个项目稍微有点大,可以用来进阶,是国内的一个区块链项目,但是好在有官方文档,之前我也运行过。不过记录的笔记丢了,感觉还不错

源码:https://github.com/FISCO-BCOS/FISCO-BCOS
文档:https://fisco-bcos-documentation.readthedocs.io/zh-cn/latest/docs/introduction.html#fisco-bcos

4、python

这篇文章是登上natural的一篇讲群体学习的文章,论文还是值得看看的,不过代码嘛,我运行过,当时刚开始学习,记了笔记,花了我两个月时间,国内的话不太好运行,而且它的代码也稍微有点问题,并且自从版本2之后,核心源码就被了隐藏了,我根本看不到,而且如果有问题的话,网络上也没有那么多解决信息,只能自己解决,虽然最后我运行出来了,如果想要运行笔记的话,我倒是可以分享下,但是我不太建议看他的代码,可以看些简单的,并且他的代码有个数据集好像还不能跑,当时也每太深入研究,毕竟我是需要毕业的,不让我看源码我就不研究他了。好像是基于以太坊的,不过虽然他说是群体学习,但是实际看他的代码,是链下聚合,区块链其实只起到了交流信息的作用。

https://github.com/schultzelab/
https://www.nature.com/articles/s41 
http://www.dtcms.com/a/335514.html

相关文章:

  • Linux入门指南:基础开发工具---vim
  • 飞算AI 3.2.0实战评测:10分钟搭建企业级RBAC权限系统
  • ZKmall开源商城的移动商城搭建:Uni-app+Vue3 实现多端购物体验
  • PostgreSQL——用户管理
  • 轻松配置NAT模式让虚拟机上网
  • Go语言企业级权限管理系统设计与实现
  • Bootstrap4 轮播详解
  • Apollo 凭什么能 “干掉” 本地配置?
  • 使用Ansys Fluent进行倒装芯片封装Theta-JA热阻表征
  • Spring Cloud整合Eureka、ZooKeeper、原理分析
  • 牛客周赛 Round 104(小红的矩阵不动点/小红的不动点权值)
  • 【Netty核心解密】Channel与ChannelHandlerContext:网络编程的双子星
  • 适用监测农作物长势和病虫害的高光谱/多光谱相机有哪些?
  • Mac(四)自定义按键工具 Hammerspoon 的安装和使用
  • Baumer高防护相机如何通过YoloV8深度学习模型实现行人跌倒的检测识别(C#代码UI界面版)
  • Redis入门1
  • 【Leetcode hot 100】189.轮转数组
  • 【C2000】C2000例程使用介绍
  • 24. 什么是不可变对象,好处是什么
  • Flink作业执行的第一步:DataFlow graph的构建
  • 一周学会Matplotlib3 Python 数据可视化-多子图及布局实现
  • 【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
  • Python可视化工具-Bokeh:动态显示数据
  • 【Golang】:错误处理
  • 10 SQL进阶-SQL优化(8.15)
  • 【Luogu】每日一题——Day21. P3556 [POI 2013] MOR-Tales of seafaring (图论)
  • 中国大学MOOC--C语言程序设计第十周字符串(下)
  • openEuler等Linux系统中如何复制移动硬盘的数据
  • HTTPS 配置与动态 Web 内容部署指南
  • Hadoop入门