基于以太坊的教育众筹平台EduFund
项目简介
EduFund是一个基于以太坊区块链技术的教育众筹平台,旨在连接学生、教育机构和资助者,帮助贫困学生以及教育援助机构筹集资金以支付教育费用。平台包含两种角色,分别是投资者和众筹发起人(以下简称发起人);支持两种操作,分别是众筹和投资。平台允许加入区块链上的所有用户参与众筹和投资。当达到项目所需的目标资金时,众筹成功,发起人可以使用众筹得到的资金进行下一步的资助,但发起人能否使用该笔资金需要由所有投资者共同决定。当投资人同意使用,且其共同的投入资金占据所有众筹资金的一半及以上时,发起人方可使用。
本项目基于vue框架构建前端页面,项目运行在Ganache生成的私有区块链上,借助truffle框架编写和部署智能合约,最后在前端页面借助MetaMask工具管理不同账户的众筹和投资信息。
以太坊
以太坊(英文Ethereum)是一个开源的有智能合约功能的公共区块链平台,通过其专用加密货币以太币(Ether,简称“ETH”)提供去中心化的以太虚拟机(Ethereum Virtual Machine)来处理点对点合约。
- 以太坊允许用户构建和部署软件(通常以Dapp的形式),然后由所有运行以太坊的全球分布式计算机网络提供支持。以太坊网络是去中心化的,这一点使其能够高度抵抗任何形式的审查或停机。
- 以太坊是一个开源区块链平台,使用其原生货币以太币运行。所有网络交易费用或燃料费均以ETH支付。ETH是以太坊区块链专门用于支付交易费用的代币。这种代币负责为网络中发生的几乎所有事情提供支持。
- 任何人都可以使用以太坊网络来创建和运行智能合约,这些智能合约是自主运行的软件程序,无需用户干预。以太坊的增长一定程度上可以归功于其智能合约功能,这使得Dapp、非同质化代币(NFT)等生态系统不断发展。
基于以太坊的教育众筹系统拥有多个优势,主要包括:
- 透明度和可追溯性:以太坊区块链提供了一个不可更改和完全透明的记录系统。所有交易和资金流动都被记录在区块链上,任何人都可以查看,确保资金的使用透明且符合公开的众筹目标。
- 安全性:使用以太坊的智能合约可以自动执行合同条款,减少了人为错误和欺诈的可能性。智能合约一旦部署,其逻辑就无法更改,这为资金提供了额外的安全保障。
- 全球化接入:基于以太坊的众筹平台可以轻松地接触到全球用户,不受传统银行系统或地理界限的限制。这意味着项目可以吸引更广泛的资助者,增加筹资的可能性。
- 减少交易成本和时间:区块链技术可以去除中介机构,如银行和支付处理服务,从而降低交易费用和处理时间。
- 代币化:众筹项目可以发行自己的代币,作为筹资的一种手段。这些代币可以在以太坊网络上自由交易,增加了筹资的灵活性和吸引力。
- 灵活性和可编程性:智能合约的使用允许众筹平台开发者根据具体项目需求定制复杂的资金管理和分配逻辑,支持更多定制化的筹资需求。
项目依赖的环境
后续章节会对环境做详细介绍
-
Ganache:v7.9.1 Ganache 下载链接
-
Node.js:v16.20.2 (Node.js版本过高可能无法运行项目)
-
npm:8.19.4
-
truffle:v5.11.5 (core: 5.11.5)
-
Solidity:0.8.21 (solc-js)
-
MetaMask:11.12.2
项目文件目录如下
**启动项目 **
安装依赖
- 首先配置Node、npm、yarn,安装ganache、truffle,并安装浏览器插件MetaMask。
ganache构建以太坊区块链
- 打开ganache软件,在ganache软件上选择 quickstart,并进行设置。在 workspace 标签卡中 add project 导入项目文件
./truffle-config.js
,在server 标签卡将端口改为8545,单击右上角 save and restart。
truffle编译和部署智能合约
- 在项目文件夹下打开终端,输入:truffle compile 对智能合约进行编译;输入:truffle migrate 将合约部署到ganache搭建的私有区块链上。
- 打开 ganache 软件页面上侧的contracts 选项卡,将EduFunding 合约的地址复制,找到
./EduFunding/src/api/contract.ts
文件的第7行,将 0x 开头的地址覆盖为EduFunding合约地址。 - 将
./build/contracts/CrowdFunding.json
文件复制到./EduFunding/src/api/
目录下
启动前端项目
- 切换到
./EduFunding/
目录下,输入:yarn 安装项目的全部依赖;输入:yarn serve运行项目。浏览器中访问:http://localhost:8080。 - 在metamask中选择连接 localhost:8545 的本地网络,从 ganache 中导入账户进去,开始测试。
Truffle框架介绍
Truffle是目前最流行的以太坊DApp开发框架,它是一个基于Javascript的以太坊Solidity语言开发框架,可以帮助我们快速构建、测试以及发布智能合约。
当我们需要在以太坊部署智能合约时,Truffle框架能为我们提供从模版开发、编译、调试至部署的全面支持,简化了智能合约的开发流程。
当使用 Truffle 开发 DApp 项目时,需要创建一个 Truffle 项目并编写智能合约。以下是一些关于 Truffle 项目文件的基本信息:
创建 Truffle 项目:
- contracts/:Solidity 合约目录
- migrations/:部署脚本文件目录
- test/:测试脚本目录
- truffle-config.js:Truffle 配置文件
编译合约:
- 使用 truffle compile 命令编译智能合约,生成构建文件。
使用 Truffle Migrate 部署合约:
- 运行部署脚本,例如 truffle migrate,以部署合约到模拟区块链。
Ganache
Ganache是一个可以在本地模拟以太坊环境的客户端,可以在上面部署合约、开发程序和测试,可以把它看作是一个本地版的以太坊。下载对应系统的版本安装即可。
可以通过主页面的QUICKSTART快速启动,它的数据不会保存,每次启动后都是全新的开发环境。NEW WORKSPACE是保存当前的数据到相应的工作空间中,可以有多个工作空间。
在这里插入图片描述
配置RPC服务相关设置,配置Accounts & Keys ,这里设置初始账号数量和账号的初始金额为多少以太币ETH。
配置完成后可以在ganache主界面查看信息,界面主体有10个账号,分别列出了每个账号的地址,余额,已经完成的交易数量、账号数组中的索引、显示私钥按钮等。点击那个钥匙图标,就会显示它的私钥。之后可以在Metamask上添加账户。
MetaMask
MetaMask是一个开源的以太坊钱包,能帮助用户方便地管理自己的以太坊数字资产,官方发布消息称其支持市面上所有的DAPP应用程序。可以在浏览器插件中搜索MetaMask并安装。
可以将MetaMask与我们的Ganache连接起来,这样Dapp开发的过程中代码可以直接调用MetaMask进行交易。点击MateMask中的网络选择按钮,选择localhost:8545。