当前位置: 首页 > 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.lryc.cn/news/624043.html

相关文章:

  • 电容,三极管,场效应管
  • 【状压DP】3276. 选择矩阵中单元格的最大得分|2403
  • 电动车安全技术全解析:从传统制动到智能驾驶的技术革命
  • MySQL深度理解-MySQL8新特性
  • 三种变量类型在局部与全局作用域的区别
  • 深入理解C#特性:从应用到自定义
  • 一起Oracle 19c bug 导致的业务系统超时问题分析
  • 嵌入式C语言学习笔记之枚举、联合体
  • Jenkins - CICD 注入环境变量避免明文密码暴露
  • 图解直接插入排序C语言实现
  • 跨越南北的养老对话:为培养“银发中国”人才注入新动能
  • 数据准备|生成折线图
  • Python自学09-常用数据结构之元组
  • Java语法进阶之常用类
  • 【新手入门】Android基础知识(二):Binder进程间通信,理解Binder工作原理以及Binder实体、Binder引用、Binder代理概念
  • K8S集群环境搭建(一)
  • 双指针和codetop2(最短路问题BFS)
  • Maven依赖范围
  • 检查xrdp远程连接桌面卡顿的问题(附解决sh脚本)
  • STM32入门之USART串口部分
  • # C++ 中的 `string_view` 和 `span`:现代安全视图指南
  • 多墨智能-AI一键生成工作文档/流程图/思维导图
  • Transformer 面试题及详细答案120道(61-70)-- 解码与生成
  • Spring IOC 学习笔记
  • Spring 创建 Bean 的 8 种主要方式
  • Vue3 中的 ref、模板引用和 defineExpose 详解
  • 数据结构初阶(18)快速排序·深入优化探讨
  • 【深度学习-基础知识】单机多卡和多机多卡训练
  • oom 文件怎么导到visualvm分析家
  • 生成模型实战 | InfoGAN详解与实现