Skip to content

aiqubits/ETH-Academy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ETH-Academy

collects

1.使用 Solidity 实现一个插入排序算法

排序算法解决的问题是将无序的一组数字,例如[2, 5, 3, 1],从小到大依次排列好。插入排序(InsertionSort)是最简单的一种排序算法,也是很多人学习的第一个算法。它的思路很简单,从前往后,依次将每一个数和排在他前面的数字比大小,如果比前面的数字小,就互换位置。

2.使用 Solidity 实现一个 NFT Exchange

利用智能合约搭建一个零手续费的去中心化 NFT 交易所,主要逻辑:

  • 卖家:出售 NFT 的一方,可以挂单 list、撤单 revoke、修改价格 update。

  • 买家:购买 NFT 的一方,可以购买 purchase。

  • 订单:卖家发布的 NFT 链上订单,一个系列的同一 tokenId 最多存在一个订单,其中包含挂单价格 price 和持有人 owner 信息。当一个订单交易完成或被撤单后,其中信息清零。

3.实现一个 WETH,将 ETH 包装成 ERC20

WETH (Wrapped ETH) 是 ETH 的包装版本。由于以太币本身并不符合 ERC20 标准,导致与其他代币之间的互操作性较弱,难以用于去中心化应用程序(dApps)。

本练习要求实现一个符合 ERC20 标准的 WETH ,它比普通的 ERC20 多了两个功能:存款和取款,通过这两个功能,WETH 可以 1:1 兑换ETH。

4.实现一个基于常数乘积的 WETH-AMM 流动性池

自动做市商(Automated Market Maker,AMM)是一种智能合约,它允许数字资产之间的去中心化交易。AMM 的引入开创了一种全新的交易方式,无需传统的买家和卖家进行订单匹配,而是通过一种预设的数学公式(比如,常数乘积公式)创建一个流动性池,使得用户可以随时进行交易。

本练习只要求实现一个 WETH 的流动性池,初始化时确定另一种 ERC20 代币。

PS:参考 Uniswap V2 版本

npm install @openzeppelin/contracts @nomiclabs/hardhat-ethers ethers chai @types/chai

cd task2
npx hardhat compile
npx hardhat test
npx hardhat node
npx hardhat ignition deploy ./ignition/modules/Lock.ts --network localhost
npx hardhat ignition deploy ./ignition/modules/InsertionSort.ts --network localhost
npx hardhat ignition deploy ./ignition/modules/NFTExchange.ts --network localhost

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published