Skip to content

leoliew/blockchain-learn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

895b62c · Apr 9, 2022

History

74 Commits
Apr 9, 2022
Mar 6, 2022
Mar 6, 2022
Mar 11, 2022
Mar 13, 2022
Mar 13, 2022
Mar 13, 2022
Mar 20, 2022
Mar 20, 2022
Apr 9, 2022
Apr 9, 2022
Apr 9, 2022
Apr 9, 2022
Apr 9, 2022
Feb 26, 2022
Apr 9, 2022

Repository files navigation

blockchain-learn

区块链集训营作业

  • 安装 Metamask、并创建好账号
  • 执行一次转账
  • 使用 Remix 创建任意一个合约
  • VSCode IDE 开发环境配置
  • 使用 Truffle 部署 Counter 合约 到 test 网络(goerli)(提交交易 hash)
  • 编写一个测试用例
  • 使用Hardhat部署修改后的Counter
  • 使用Hardhat测试Counter
  • 写一个脚本调用count()
  • 编写⼀个Bank合约:
  • 通过 Metamask 向Bank合约转账ETHw
  • 在Bank合约记录每个地址转账⾦额
  • 编写 Bank合约withdraw(), 实现提取出所有的 ETH
  • 编写合约Score,⽤于记录学⽣(地址)分数:
    • 仅有⽼师(⽤modifier权限控制)可以添加和修改学⽣分数
    • 分数不可以⼤于 100;
  • 编写合约 Teacher 作为⽼师,通过 IScore 接⼝调⽤修改学⽣分数。
  • 发⾏⼀个 ERC20 Token:
    • 可动态增发(起始发⾏量是 0)
    • 通过 ethers.js. 调⽤合约进⾏转账
  • 编写⼀个Vault 合约:
    • 编写deposit ⽅法,实现 ERC20 存⼊ Vault,并记录每个⽤户存款⾦额 , ⽤从前端调⽤(Approve,transferFrom)
    • 编写 withdraw ⽅法,提取⽤户⾃⼰的存款 (前端调⽤)
    • 前端显示⽤户存款⾦额
  • 发行一个 ERC721 Token
    • 使用 ether.js 解析 ERC721 转账事件(加分项:记录到数据库中,可方便查询用户持有的所有NFT)
    • (或)使用 TheGraph 解析 ERC721 转账事件
  • 部署自己的 ERC20 合约 MyToken
  • 编写合约 MyTokenMarket 实现:
    • AddLiquidity():函数内部调用 UniswapV2Router 添加 MyToken 与 ETH 的流动性
    • buyToken():用户可调用该函数实现购买 MyToken
  • 在上一次作业的基础上:
    • 完成代币兑换后,直接质押 MasterChef
    • withdraw():从 MasterChef 提取 Token 方法
  • 以太坊测试网上部署两个自己的 ERC20 合约 MyToken,分别在 Uniswap V2、V3 (网页上)添加流动性
  • 作业:编写合约执行闪电贷(参考 V2 的 ExampleFlashSwap ):
    • uniswapV2Call中,用收到的 TokenA 在 Uniswap V3 的 SwapRouter 兑换为 TokenB 还回到 uniswapV2 Pair 中。
  • 在一笔交易中完成(模拟闪电贷交易)
    • 在 AAVE 中借款 token A
    • 使用 token A 在 Uniswap V2 中交易兑换 token B,然后在 Uniswap V3 token B 兑换为 token A
    • token A 还款给 AAVE
  • 设计一个看涨期权Token:
    • 创建期权Token 时,确认标的的价格与行权日期;
    • 发行方法(项目方角色):根据转入的标的(ETH)发行期权Token;
    • (可选):可以用期权Token 与 USDT 以一个较低的价格创建交易对,模拟用户购买期权。
    • 行权方法(用户角色):在到期日当天,可通过指定的价格兑换出标的资产,并销毁期权Token
    • 过期销毁(项目方角色):销毁所有期权Token 赎回标的。
  • 实现⼀个通过 DAO 管理资⾦的Treasury:
    • 管理员可以从Treasury合约中提取资⾦withdraw()
    • 治理Gov合约作为管理员
    • 通过发起提案从Treasury合约资⾦

About

以太坊学习课程

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published