区块链/分布式账本技术的工程实践,主要包括Linux基础操作、区块链环境配置和调试以及智能合约开发与部署等。这需要在实验环境的计算机中安装大量支撑软件并进行相关配置,同时需要构建多个节点提供效果展示和练习。实验中涉及的主要软件见表一。
软件
说明
备注
git
下载依赖的代码和镜像
curl
下载依赖的代码和镜像
docker,
docker-compose
以容器方式提供多节点支持,运行管理fabric环境
go
go语言编译环境
fabric-sample
fabric示例代码
依赖curl或者git下载
fabric
Hyperledger基础环境,包含系列容器镜像
hyperledger/fabric-tools
hyperledger/fabric-peer
hyperledger/fabric-orderer
hyperledger/fabric-ccenv
hyperledger/fabric-baseos
hyperledger/fabric-nodeenv
hyperledger/fabric-javaenv
hyperledger/fabric-ca
hyperledger/fabric-zookeeper
hyperledger/fabric-kafka
hyperledger/fabric-couchdb
依赖docker
ethereum
以太坊基础环境
vscode
开发工具,需安装go、solidity插件等
需图形界面
表一,课程必备软件
目前,学校的计算机基础教育主要使用单台PC机来教学。而在分布式账本的教学实验中,1个学生需要分配多台计算机来模拟分布在不同主机上的功能节点,机房现有的计算资源很难满足大规模的教学。实际教学时,由于分布式系统的复杂性,不同实验需要安装调试不同的支撑环境,部分实验周期无法在同一天内完成。因为实验环境需要在多个教学周中保持,现有计算机教学机房的还原卡模式无法满足连续教学的需求。在课外,学生难以在个人计算机上配置教学中的实验环境,没法进行课后复习,也没法进行探索实验。
教学中的实验,主要用于说明系统原理和体现实际运行时的特点,部署系统并不需要占用很多资源,可以使用容器或者全虚拟化环境进行集约化管理。另外,作为全校性的公选课,学生主要来自非计算机专业,甚至包括文科类的学生。这些学生的计算机实际操作能力比较弱,实际执行时操作步骤可能丢失或者杂乱无章,导致系统异常;学生和教师团队在环境配置和调试工作中浪费大量时间。
本仿真平台的目的是提供全套区块链学习套件。系统提供同步的课件播放功能,展现直观的分布式系统体验,提供高效便捷部署的实验环境。
仿真平台现阶段提供基于云存储的课件存储播放能力,同步配合课程进行展示,下一阶段,将完善课件实验联动功能,提供学生分步骤操作的校验、结果图形化展示和操作错误提示功能。
实验环境基于计算机虚拟化的原理,由服务器集群提供满足教学要求的教学环境。对于既定的教学课程,教师可以提前准备好实验所需的镜像,并将镜像分发给课程中的每个学生。学生不需要操心实验环境的搭建,只需要关心实验本身的操作。实验环境中CPU、内存、存储等计算存储资源以资源池方式提供,根据课程需求,管理平台从集群中分配相应的CPU和内存资源,构建网络隔离的虚拟计算机,避免学生使用过程中IP地址冲突等问题,使用完成后,资源被释放回资源池。如果学生在实验中破环了环境,只需要回收资源并再分配,即可快速重置实验。如果实验环境需要保留多周,在课程结束之后,管理员只需要保存学生操作进度,释放占用的虚拟机资源,下次课程开始时恢复现场即可。因此,平台可以快速提供课程实验环境,并且避免了长时间资源占用,资源仅需满足同一时间进行实验人数的计算资源需求和保存课程进度的存储资源需求。
知识点:共8个
(1)Linux的基本知识和命令的使用(基础)
(2)区块链相关的密码和编码
(3)共识机制
(4)Go语言编写
(5)Fabric环境的部署
(6)Chaincode编写智能合约
(7)以太坊的部署和使用
使用Solidity编写智能合约