原文发布在 https://github.com/33357/smartcontract-apps这是一个面向中文社区,分析市面上智能合约应用的架构与实现的仓库。欢迎关注开源知识项目!
Uniswap-v2 Factory合约分析Factory 合约是 Uniswap-v2 用来创建资金池的合约,通过分析它可以深入了解 Uniswap-v2 的运行逻辑。
演示代码仓库:https://github.com/33357/uniswap-v2-contract。
合约初始化- 公共函数(合约内外部都可以调用)
- constructor
-
代码速浏览
constructor(address _feeToSetter) public { feeToSetter = _feeToSetter; }
-
参数分析
函数
constructor
的入参有1个,出参有0个,对应的解释如下:constructor( address _feeToSetter // 手续费管理员地址 ) public { ... }
在合约初始化时,需要在函数
constructor
中传入_feeToSetter
,该参数设置了手续费管理员地址。 -
实现分析
... { // 设置手续费管理员地址 feeToSetter = _feeToSetter; }
-
总结
Factory 合约初始化时,需要传入手续费管理员地址。
-
- constructor
- 外部函数(仅合约外部可以调用)
- allPairsLength
-
代码速浏览
function allPairsLength() external view returns (uint) { return allPairs.length; }
-
参数分析
函数
allPairsLength
的入参有0个,出参有1个,对应的解释如下:function allPairsLength() external view returns ( uint // 资金池的数量 ) { ... }
函数
allPairsLength
返回了allPairs
的长度,也就是当前资金池的数量。 -
实现分析
... { // 返回资金池数组的长度 return allPairs.length; }
-
总结
获取 allPairs 需要输入 index,因此需要获取资金池数组。
-
- createPair
-
代码速浏览
function createPair(address tokenA, address tokenB) external returns (address pair) { require(tokenA != tokenB, 'UniswapV2: IDENTICAL_ADDRESSES'); (address token0, address token1) = tokenA
关注打赏
-
- allPairsLength
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?