第二次作业要求(可以删除):
去中心化学生社团组织治理应用
每个学生初始可以拥有或领取一些通证积分(ERC20)。
每个学生可以在应用中可以:
- 使用一定数量通证积分,发起关于该社团进行活动或制定规则的提案(Proposal)。
- 提案发起后一定支出时间内,使用一定数量通证积分可以对提案进行投票(赞成或反对,限制投票次数),投票行为被记录到区块链上。
- 提案投票时间截止后,赞成数大于反对数的提案通过,提案发起者作为贡献者可以领取一定的积分奖励。
(Bonus)发起提案并通过3次的学生,可以领取社团颁发的纪念品(ERC721)
以下内容为作业仓库的README.md中需要描述的内容。请根据自己的需要进行修改并提交。
作业提交方式为:提交视频文件和仓库的连接到指定邮箱。
-
在本地启动ganache应用。
-
在
./contracts
中安装需要的依赖,运行如下的命令:npm install
-
在
./contracts
中编译合约,运行如下的命令:npx hardhat compile
-
在
./contracts/hardhat.config.ts
中将ganache的url改为本地ganache网络的url地址,将ganache中账户的私钥写在accounts
下 -
在
./contracts
中部署合约,执行如下命令:npx hardhat run ./scripts/deploy.ts --network ganache
-
将合约编译好生成的
abi
文件复制到./frontend/src/utils/abis
下,即./contracts/artifacts/contracts
中的MyERC20.json
和StudentSocietyDAO.json
-
将
./frontend/src/pages/society/index.tsx
中的ganache链ID、名称和rpc url改为本地ganache中的配置 -
在
./frontend
中启动前端程序,运行如下的命令:npm run start
1.每个学生初始可以拥有或领取一些通证积分(ERC20)
使用ERC20中的_mint
函数实现某个账户领取通证积分的功能
2.使用一定数量通证积分,发起关于该社团进行活动或制定规则的提案(Proposal)
利用ERC20中的transferFrom
函数,将一定的积分转给合约,成功后将创建新的提案
3.提案发起后一定支出时间内,使用一定数量通证积分可以对提案进行投票(赞成或反对,限制投票次数),投票行为被记录到区块链上。
利用ERC20中的transferFrom
函数,将一定的积分转给合约,完成后提案的赞成/反对票增加
4.提案投票时间截止后,赞成数大于反对数的提案通过,提案发起者作为贡献者可以领取一定的积分奖励。
提案投票时间截止后,合约检测其通过状态,并利用ERC20中的transfer
函数从合约转给提案发起者一定数量的通证积分
放一些项目运行截图。
项目运行成功的关键页面和流程截图。主要包括操作流程以及和区块链交互的截图。
课程的参考Demo见:DEMOs。