SC programmer

@smartcontractprogrammer

https://www.smartcontract.engineer/

注册于 2025-01-20
铸币 | Uniswap V3 核心合约解析 - 第6部分

本文介绍了在Uniswap B3 Pro中实现添加流动性功能的过程,重点是创建一个名为mint的函数。该函数需要接收多个参数,包括接收者地址、上下限tick、流动性数量等,并返回两个输出:增加流动性所需的token零和token一的数量。文章还讨论了实现重入保护的锁定修饰符,并概述了如何调用内部函数modify position来保存流动性信息和计算所需的token数量。此外,文中提到需要定义相关的数据结构和库,以便进行类型转换。最终,作者成功编译了合约,并计划在后续视频中实现modify position函数。

1777 0 0 2025-01-22
Sqrt Price X 96 转换为 Tick | Uniswap V3 核心合约解析 - 第 5 部分

要计算tick值,首先需要知道平方根价格x96,它由价格p和常数q96(2的96次方)计算得出。通过公式p = (平方根价格x96 / q96)²,可以得到价格p。接着,利用公式p = 1.0001^tick,可以通过对两边取自然对数并进行变换,最终得到tick的计算公式为tick = (2 * log(平方根价格x96 / q96)) / log(1.0001)。通过Python代码示例,可以验证计算出的tick值与智能合约中存储的tick值之间的差异。

2185 0 0 2025-01-22
Sqrt Price X 96 | Uniswap V3 核心合约解析 - 第4部分

Square root price x96 is defined as the square root of the price (p) of a token ratio multiplied by q96, where q96 equals 2 raised to the 96th power. To calculate the price p from square root price x96, one divides square root price x96 by q96 and squares the result. An example illustrates this process using the arbitram eif USDC pool, resulting in a calculated price of eif in terms of USDC as 1888 after adjusting for the respective decimal places of the tokens involved.

1931 0 0 2025-01-22
初始化和插槽 0 | Uniswap V3 核心合约解析 - 第 3 部分

本视频介绍了Uniswap B3中的initialize函数的代码实现,重点讲解了新术语如平方根价格x96和slot 0。initialize函数用于在合约部署后设置初始价格,输入参数为uint 160类型的平方根价格x96。slot 0是合约中第一个声明的状态变量,使用以太坊虚拟机的存储0号槽,能够存储最多32字节的数据。视频中还提到如何计算tick值,并强调了某些变量在本视频中未详细解释。最后,成功编译了合约,并预告将在后续视频中进一步解释平方根价格x96及其相关计算。

1875 0 0 2025-01-22
最大每个价格点流动性 | Uniswap V3 核心合约解析 - 第二部分

在本视频中,我们实现了Uniswap V3中的一个函数——tick spacing to max liquidity per tick,该函数用于计算两个tick之间的最大流动性。首先,我们通过将最小和最大tick分别向上和向下舍入到tick spacing的倍数,来确定tick的范围。接着,计算这两个tick之间的tick数量,并将最大流动性除以tick数量,以获得每个tick的最大流动性。最后,我们解决了代码中的一些编译错误,确保了合约的成功编译。接下来,我们将开始实现初始化函数。

1291 0 0 2025-01-22
价格、刻度和刻度间距 | Uniswap V3 核心合约解析 - 第1部分

在Uniswap B2和B3中,价格的计算方式有所不同。在Uniswap B2中,价格是通过两个代币的数量比率计算的,而在Uniswap B3中,价格由公式p = 1.0001^tick计算,需结合流动性、价格范围和当前价格来确定池中的代币数量。Tick spacing则是指价格变动时跳过的tick数量,例如,如果tick spacing为2,则价格每次变动只能增加或减少2个tick。通过这些概念,可以更好地理解Uniswap的定价机制和流动性管理。

1980 0 0 2025-01-22
构造函数 | Uniswap V3 核心合约解析 - 第0部分

本系列视频将深入讲解Uniswap v3池合约的工作原理,逐行分析代码。视频将涵盖项目设置和构造函数的编写,重点介绍不可变变量如token 0、token 1、费用和tick间距的初始化。虽然不涉及工厂合约、价格文章、协议费用等高级主题,但将为理解Uniswap v3的核心功能打下基础。接下来的视频将进一步探讨价格、tick和tick间距的概念。

6787 0 0 2025-01-22
Uniswap V2 源码分析

涵盖了Uniswap V2 关键概念,如常量乘积自动做市商(AMM)背后的数学、Uniswap V2 合约的结构,以及模拟交易的实际练习。该课程强调通过实践学习,鼓励参与者与代码互动,并通过编写测试和在主网分叉上执行交易的练习来应用他们的知识。此外,它还讨论了有效学习的最佳实践,并提供有关 Uniswap 生态系统中流动性提供、闪电交换和套利机会的机制见解。

6718 0 0 2025-01-22
以太坊和Optimism跨链消息同步与资产跨链

本视频介绍了如何在以太坊和Optimism之间发送消息和ERC20代币。首先,创建并部署ERC20和OPERC20合约,然后通过L1标准桥将ERC20锁定在L1,并在L2上铸造OPERC20。接着,演示了如何从L2提取OPERC20并将其发送回L1,涉及到的步骤包括调用L2标准桥的相关函数、证明和最终确认提取交易。通过这些步骤,用户可以实现L1与L2之间的代币转移,掌握了在Optimism上进行跨链操作的基本流程。

1223 0 0 2025-01-06