Wong Shouhao

@wongssh

Joined on Sep 26, 2023

  • 概述 Lotus Router 是 jtriley2p 开发的一个用于 MEV 的交易路由的合约。此处我们需要特别强调该路由合约是适用于 MEV 交易的,该路由合约完全不会处理来自 Uniswap 合约的回调内的数据,这使得交易发起者必须预先计算出精确数值已进行交易。 目前路由合约支持以下几个协议: Uniswap v3 Uniswap v2 Uniswap Flashloan ERC20 Transfer and TransferFrom WETH Wrap and Unwrap
     Like 1 Bookmark
  • 概述 在 Uniswap V4 内,我们可以看到一些复杂的数学计算模块,这些数学计算相关的模块大部分都使用了内联汇编实现,同时包含了大量的 magic number。在本文,我们将详细分析数学计算模块的实现。 BitMath 在 src/libraries/BitMath.sol 文件内,Uniswap V4 实现了两个函数,注意这两个函数都是用于检索 uint256 中的 1 的索引位置。一般来说,我们定义 uint256 最左侧为索引值 0,而最右侧为索引值 255。 在 Uniswap V4 内,我们可以看到 mostSignificantBit 和 leastSignificantBit 两个函数。其中 mostSignificantBit 是用来搜索 uint256 内索引值最大的 1 所在的位置,或称搜索最高有效位的索引。而 leastSignificantBit 则用于检索 uint256 内索引值最小的 1 所在的位置,或称搜索最低有效位的索引。以 0b1111 为例,当我们调用 mostSignificantBit(0b1111) 返回结果为 3(索引值从 0 开始),而 leastSignificantBit(0b1111) 的返回值为 0。 在进行后文的介绍之前,我们需要进行一个简单的 Python 项目配置。在此处,笔者使用了目前最优秀的 Python 环境管理工具 uv。读者可以自行从 官网 进行安装。安装完成后,我们可以使用以下命令初始化项目:
     Like  Bookmark
  • 概述 Morpho 是目前以太坊内第四大借贷协议(数据来源为 defillama)。相比于其他高度复杂的借贷协议,Morpho Blue 的合约使用了 500 行代码就完成了所有的借贷工作。同时,Morpho 也是一个无许可的借贷协议,任何用户都可以调用合约内部的 createMarket 函数使用指定的参数创建交易市场。但是需要注意,Morpho 也并不是完全自由的,用户不可以随意指定一些借贷参数。 Morpho Vault 清算规则和利率 总所周知,在一个借贷协议内最终部分永远是利率计算和清算部分。我们首先介绍清算部分。对于清算,Morpho 也使用了传统的 LTV 方案。我们可以使用以下公式计算某一个仓位的 LTV: $$ LTV = \frac{\text{BORROWED AMOUNT} ∗ \text{ORACLE PRICE}}{\text{COLLATERAL AMOUNT} * \text{ORACLE PRICE SCALE}} $$
     Like 3 Bookmark
  • 概述 在上一篇博客内,我们详细介绍了 Uniswap V3 的基础原理。在本篇博客内,我们将继续介绍与 Uniswap V3 差别不大的 Uniswap v4 的原理及代码。需要注意的,Uniswap v4 的 AMM 曲线部分与 Uniswap v3 是一致的,但增加了一些优化的业务逻辑。本文将跳过所有与 Uniswap v3 类似的部分,只介绍 Uniswap v4 的特性。 本文将主要介绍 Uniswap V4 的以下特性: Singleton Pool。所有的代币的交换池都位于单一合约内部,降低了在链式兑换时的 gas 消耗 Flash Accounting。一个用于跟踪交易过程中净流入和净流出代币的系统,只需要用户保证一笔交易中最后的代币平衡即可,并不需要向 Uniswap v3 一样保持交易中每一次 swap 调用的平衡 Hooks。最为知名的特性,为 Uniswap v4 增加了巨大的可拓展性 ERC 6909。一个类似 ERC1155 的协议,使用该 ERC 标准实现了用户可以将部分资产存入 Uniswap V4 内部已实现更加高效的兑换
     Like 1 Bookmark
  • 概述 全链游戏突然间再次成为了叙述主流。万幸的是,我所熟悉的 StarkNet 生态系统内存在目前最好的全链游戏引擎之一的 Dojo。 此教程可以认为是 Dojo 开发的 Quick Start,本文会介绍 dojo 开发环境的搭建与 ECS 系统的基本概念,但是由于笔者不擅长游戏逻辑设计且专精于 cairo 开发,所以本文会包含大量的源代码阅读,帮助读者深入了解 dojo 开发框架。 本文基于 dojo v0.4.1 编写。 环境配置 我们首先使用以下命令安装 dojoup:
     Like  Bookmark