简易区块链系统实战

本文旨在通过搭建一个 简易的区块链系统 ,来结合所学的区块链知识,更好的理解区块链的各个细节。

当然,该系统不包含 智能合约 ,毕竟这只是一个demo

通过学习本实例,也许可以获得以下知识:

学习内容:

  • 简易区块链系统的运行细节
  • Python语法的学习
  • HTTP协议的GET、POST运行机制
  • Flask微型Web框架的学习
  • 等等…

接下来,我们会先为系统的开发搭建准备开发环境和工具,还有一些必要的前期准备,here we go !

一、Python环境搭建
这里使用了Python 3.7+,编译器为Pycharm 2020.3.1 社区免费版
①首先访问

https://www.python.org/

网站,从上面下载:
在这里插入图片描述
(接下来按步骤安装即可,如果还不清楚的话,可以去搜一下更为详细的Python安装教程,这里不做详细介绍了。)

安装结束后,按“win+R”,在运行框内输入“cmd”,在命令符内输入"python -version",如果成功显示python版本,即安装成功。

②安装编译器Pycharm;访问网址

https://www.jetbrains.com/pycharm/

点击下方的"DOWNLOAD",然后在新页面点击下方的CommunityDownload即可,我们所需的功能社区版足够了。
在这里插入图片描述
接下来按步骤安装即可,如果还不清楚的话,可以去搜一下更为详细的Pycharm安装教程,这里也不做详细介绍了。

二、介绍Flask以及Flask安装

Flask是一个用Python编写的Web应用程序框架。Armin Ronacher带领一个名为Pocco的国际Python爱好者团队开发了Flask。Flask基于Werkzeug WSGI工具包和Jinja2模板引擎。两者都是Pocco项目。
Flask也被称为“microframework” ,因为它使用简单的核心,用extension增加其他功能。Flask没有默认使用的数据库、窗体验证工具。

简单来说,Flask为具有Python基础知识的开发者提供了一个简易且快速搭建网站的框架,可以很快实现前后端开发。

我们使用 Flask框架 来快速完成区块链系统的后端。

Flask安装
键盘上“win+R”,在运行框内输入“cmd”,在命令符内输入:

pip install Flask

回车,等待一小会即可安装Flask模块成功。

Tips注意! 这里需要注意是否有 Werkzeug模块,如果不太确定的话,可以在Flask安装完成后,再在命令符窗口输入下面语句,如果已经安装好了会显示版本信息,如果没有安装会直接安装。

pip install Werkzeug

requests安装
上述我们说到需要用到HTTP协议的GET和POST等请求来让前后端交互,因此需要用到python的requests模块来完成GETPOST等请求。

同样的,在命令符窗口内输入:

pip install requests

回车,等待一小会即可安装requests模块成功。

OK,上述步骤我们完成了Python环境的初步搭建,大体分为四步:

  • 安装Python环境(版本3.7以上)
  • 安装Python编译器(这里使用了pycharm,其他的亦可)
  • 安装Flask框架模块
  • 安装requests框架

接下来,我们需要安装一个软件 postman

三、postman介绍及安装

postman是一款强大网页调试工具的客户端,postman为用户提供强大的 Web API & HTTP 请求调试功能,postman能够发送任何类型的HTTP请求!这正是我们所需要的。

首先,访问postman官方下载网站

https://www.postman.com/downloads/

在这里插入图片描述
这里我们选择和自己电脑相匹配的版本(一般都是选择64-bit版本,除非电脑系统较老不支持64-bit),点击"Download the App",等待下载完成后,打开安装包,按步骤安装即可。
(如果安装期间有不太确认的选项,可以在网上搜更为详细的安装教程,这里不做过多详细介绍。)

需要注意的是,postman需要完成用户注册,用户注册比较简单,如实填写即可。

致此,我们需要的所有开发环境已经搭建完成,接下来可以正式进入区块链系统的正式搭建!

未完待续…

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简易区块链系统的Go语言实现示例: 首先,我们定义一个区块的结构体: ``` type Block struct { Index int Timestamp string Data string Hash string PrevHash string } ``` 其中,Index代表区块的索引,Timestamp代表区块产生的时间戳,Data是区块中存储的数据,Hash是该区块的哈希值,PrevHash是前一个区块的哈希值。 接下来,我们定义一个区块链的结构体: ``` type Blockchain struct { blocks []*Block } ``` 其中,blocks是一个Block类型的切片,用于存储整个区块链。接下来,我们实现一些区块链的基本操作: 1.创建创世区块: ``` func (bc *Blockchain) createGenesisBlock() { block := &Block{ Index: 0, Timestamp: time.Now().String(), Data: "Genesis Block", PrevHash: "", } block.Hash = calculateHash(block) bc.blocks = append(bc.blocks, block) } ``` 2.添加新的区块: ``` func (bc *Blockchain) addBlock(data string) { prevBlock := bc.blocks[len(bc.blocks)-1] newBlock := &Block{ Index: prevBlock.Index + 1, Timestamp: time.Now().String(), Data: data, PrevHash: prevBlock.Hash, } newBlock.Hash = calculateHash(newBlock) bc.blocks = append(bc.blocks, newBlock) } ``` 3.计算区块的哈希值: ``` func calculateHash(block *Block) string { record := strconv.Itoa(block.Index) + block.Timestamp + block.Data + block.PrevHash h := sha256.New() h.Write([]byte(record)) hash := h.Sum(nil) return hex.EncodeToString(hash) } ``` 最后,我们可以使用以下代码来测试我们的区块链系统: ``` func main() { bc := Blockchain{} bc.createGenesisBlock() bc.addBlock("Block 1") bc.addBlock("Block 2") for _, block := range bc.blocks { fmt.Printf("Index: %d\n", block.Index) fmt.Printf("Timestamp: %s\n", block.Timestamp) fmt.Printf("Data: %s\n", block.Data) fmt.Printf("Hash: %s\n", block.Hash) fmt.Printf("PrevHash: %s\n", block.PrevHash) fmt.Println() } } ``` 运行结果: ``` Index: 0 Timestamp: 2022-05-09 21:15:14.0970406 +0800 CST m=+0.004974101 Data: Genesis Block Hash: 5c8a5b5f29b7b0a9f4ab3d1c3f4c5b9e5a3d5f6d7cf1f51a7c9b4d5d0d2f44e4 PrevHash: Index: 1 Timestamp: 2022-05-09 21:15:14.0980389 +0800 CST m=+0.005972401 Data: Block 1 Hash: 4e59b5aae5b8d83f1c2f8ce7f6d8d9a6a2c5c34b4a37a9ea6a8178567e0e34d2 PrevHash: 5c8a5b5f29b7b0a9f4ab3d1c3f4c5b9e5a3d5f6d7cf1f51a7c9b4d5d0d2f44e4 Index: 2 Timestamp: 2022-05-09 21:15:14.0980389 +0800 CST m=+0.005972401 Data: Block 2 Hash: 73c4d5e8d166c7f4e1f1c5c50289597f7990a1cda3dd953f03d1d4400f8e71e2 PrevHash: 4e59b5aae5b8d83f1c2f8ce7f6d8d9a6a2c5c34b4a37a9ea6a8178567e0e34d2 ``` 这样,我们就实现了一个简易区块链系统。当然,这只是一个基础的示例,实际的区块链系统要比这个复杂得多,包括更多的功能和安全性考虑。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值