文章
视频
课程
百科图谱
集训营
更多
问答
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
首页
文章
视频
课程
集训营
工作
工作
问答
活动
文档
集市
搜索
登录/注册
SC programmer
文章
专栏
问答
视频
课程
集市作品
活动
招聘
TA的视频
TA的合集
Uniswap V3 池套利算法
视频 AI 总结: 视频探讨了 Uniswap V2 和 V3 资金池之间的套利策略。首先介绍了针对 V2 资金池的最优交易量计算公式,并解释了该公式不适用于 V3 的原因,即 V3 具有集中流动性范围。视频核心是提出了一种针对 V2/V3 混合套利的算法,该算法处理流动性范围不相交和相交两种情况。对于不相交的情况,策略是耗尽其中一个资金池的流动性;对于相交的情况,则通过调整后的 V2 逻辑计算最优价格。最后,视频展示了该算法的 Python 实现及其与 Foundry 测试框架的集成,用于模拟套利过程。 关键信息: 1. **Uniswap V2 套利公式:** 存在一个精确公式,用于计算在两个 Uniswap V2 资金池之间进行套利时,能最大化利润的最优代币投入量。 2. **V2 与 V3 流动性差异:** Uniswap V2 资金池的流动性被视为从负无穷到正无穷的恒定范围;而 Uniswap V3 资金池的流动性则集中在特定的价格区间内。这是 V2 公式不直接适用于 V3 的根本原因。 3. **套利条件与目标:** 当一个资金池的价格低于另一个资金池时,存在套利机会。目标是通过交易最小化两个资金池之间的价格差异,从而最大化利润。 4. **V2/V3 混合套利算法:** * **流动性范围不相交:** 当两个资金池的流动性范围没有重叠时,策略是耗尽其中一个资金池的流动性(将价格推至其流动性范围的上限或下限),具体取决于资金池中代币的数量。 * **流动性范围相交:** 当两个资金池的流动性范围有重叠时,策略是交易至一个“最优价格”。此时,可以利用 V2 的最优价格公式,因为我们只关心达到最优价格所需的流动性,而不关心超出该价格范围的流动性。 * **相交情况的边缘处理:** 如果计算出的最优价格超出某个资金池的流动性范围,则将该资金池的价格推至其流动性范围的边界。 5. **实现与模拟:** 视频展示了使用 Python 编写的 `calcDYA` 函数来实现该算法,该函数通过循环执行交易来计算最优交易量。此外,还演示了如何将此 Python 脚本与 Foundry 测试框架集成,以获取实时数据并模拟套利交易,验证算法的有效性。
51
0
0
3天前
Cyfrin Updraft 的 Solana 智能合约课程
视频 AI 总结: 本视频是 Solana 课程的介绍,核心内容是讲解如何使用 Rust 语言和 Anchor 框架开发 Solana 程序。课程将通过原生 Solana 库和 Anchor 框架两种方式进行教学,旨在帮助学员快速掌握 Solana 程序开发,并深入理解 Solana 的底层原理。课程鼓励使用 AI 辅助学习,并提供了练习和解决方案,帮助学员实践和巩固所学知识。 关键信息: 1. Solana 程序开发有两种方式:使用 Solana 原生 Rust 库(更深入理解底层原理)和使用 Anchor 框架(快速原型开发)。 2. 学习本课程的原因包括:开发 Solana 程序、练习 Rust 编程、以及对审计和漏洞赏金感兴趣。 3. 课程的先决条件包括:Rust 编程基础、区块链基础知识、以及 EVM 智能合约开发经验(如 Solidity 或 Vypr)。 4. 鼓励使用 AI 辅助学习,但需要注意 AI 生成代码可能存在问题,需要结合文档和搜索进行修正。 5. 课程练习分为原生程序开发和 Anchor 框架开发,练习和解决方案位于 GitHub 仓库中。 6. Solana 中代码和状态分离,代码存储在 Programs 中,状态存储在 Accounts 中。 7. Solana 交易可以并行执行,因此需要声明交易可能修改的所有账户。 8. Solana 中部署程序或创建账户需要锁定 SOL,关闭账户或删除程序时,锁定的 SOL 会被返还。 9. Solana 程序默认可升级,而 Ethereum 合约默认不可变,需要使用代理合约才能升级。 10. Solana 中所有数据都存储在 Accounts 中,Accounts 包含 LAMPORTS(余额)、DATA(任意数据)、OWNER(程序所有者)、EXECUTABLE(是否为程序账户)等字段。 11. PDA (Program Derived Addresses) 是没有私钥的公钥,由程序 ID、种子和 bump 确定性地创建,常用于存储用户相关信息。 12. CPI (Cross-Program Invocation) 是程序调用另一个程序,有最大深度限制(目前为 4),且需要注意权限传递。 13. 使用 Anchor 框架开发 Solana 程序时,可以通过 IDL (Interface Definition Language) 文件导入其他程序的接口,无需手动声明指令。 14. Solana 程序有大小限制,并非所有 Rust 库都可以使用。 15. 创建 Solana 账户需要指定空间大小、支付租金,并且账户本身需要签名。 16. 转移 SOL 有两种方式:如果源账户属于系统程序,可以直接调用系统程序;如果源账户是 PDA,则需要手动转移。 17. Solana 中与 Token 相关的概念包括:Mint Authority(铸币权)、Mint(Token 本身)、Token Program(管理 Token 的程序)、Token Account(存储 Token 余额的账户)、Associated Token Account(与用户关联的 Token 账户)。 18. 可以使用 Solana CLI 管理 Token,包括创建 Token、铸币、转移 Token、查看余额等。 19. 恒定和 AMM (Constant Sum AMM) 是一种以恒定价格交换 Token 的 AMM,其公式为 x + y = L,其中 L 为常数。
394
0
0
2026-01-26 18:55
剖析 Curve V1 稳定币兑换
视频 AI 总结: 该视频是关于 Curve V1 AMM 的课程介绍,面向有 Foundry 经验的高级 Solidity 开发者。课程将深入讲解 Curve V1 的数学原理和算法,并通过 Vyper 代码冷启动、Foundry 练习等方式,帮助学习者理解 Curve V1 的内部机制,并为学习 Curve V2 打下基础。课程讲师 Tez 拥有多年的软件和智能合约开发经验,并提供 GitHub 仓库供学习者进行练习和讨论。 视频中提出的关键信息: * 课程目标:理解 Curve V1 的数学和算法,阅读 Vyper 代码,并进行 Foundry 测试。 * 预备知识:熟悉 Foundry、恒定乘积 AMM 和恒定总和 AMM 的数学原理。 * 可选知识:了解 Uniswap V2/V3、DeFi 基础知识(如稳定币 DAI/USDC)以及 Python。 * 课程内容:Curve V1 的数学和算法、Vyper 代码冷启动、Foundry 练习。 * 学习 Curve V1 的意义:为新的 AMM 设计提供灵感,帮助参与安全竞赛和漏洞赏金项目,以及为理解 Curve V2 做准备。 * Curve V1 与 Uniswap V2/V3 的区别:Curve V1 使用 Vyper 编写,滑点低,支持两种或多种代币,可以指定提款代币,并收取不平衡费用。 * Curve V1 的核心公式:是恒定乘积和恒定总和的结合,通过参数 A 控制曲线的平坦程度。 * Curve V1 使用牛顿法来计算代币数量和流动性。 * Curve V1 的主要合约是 StableSwap,用户通过 exchange, addLiquidity, removeLiquidity 等函数与之交互。 * StableSwap 合约会先计算 A 参数,再计算流动性 D。 * 所有代币余额在计算前都会转换为 18 位小数。 * getVirtualPrice 函数返回每个 LP 代币的价值。 * calcTalkingAmount 函数计算要铸造或销毁的 LP 代币数量。 * exchange 函数用于交换代币。 * getY 函数计算 tokenOut 的代币余额。 * getDy 和 getDyOnTheLine 函数计算交换代币后获得的代币数量。 * addLiquidity 函数用于向 Curve V1 AMM 添加流动性。 * removeLiquidity 函数会销毁 LP 份额,然后按比例将池中的所有代币返还给流动性提供者。 * removeLiquidityOneCoin 函数会销毁 LP 份额,然后返还用户指定的单个代币。 * calcWithdrawOneCoin 函数计算用户将收到的单个代币数量。
500
0
0
2025-11-28 11:46
默克尔树算法
视频 AI 总结: 该视频详细讲解了 Merkle Root 的计算、Merkle Proof 的生成以及 Merkle Proof 的验证算法。首先,视频介绍了如何通过哈希一系列值,并不断配对哈希值进行再次哈希,最终得到 Merkle Root。接着,视频讲解了如何根据 Merkle Root 的计算过程,提取出生成 Merkle Proof 所需的关键哈希值。最后,视频展示了如何利用 Merkle Root 和 Merkle Proof,通过循环哈希验证 Merkle Proof 的有效性。 关键信息: * **Merkle Root 计算:** 对数据进行哈希,然后将哈希值两两配对再次哈希,重复此过程直到只剩一个哈希值,即为 Merkle Root。奇数个哈希值时,复制最后一个哈希值进行配对。 * **Merkle Proof 生成:** 在计算 Merkle Root 的过程中,记录下用于计算特定哈希值所需的兄弟哈希值,这些哈希值构成 Merkle Proof。 * **Merkle Proof 验证:** 使用 Merkle Proof 中的哈希值,结合已知的哈希值,逐步计算哈希值,直到得到一个哈希值,将其与 Merkle Root 进行比较,如果一致则验证成功。 * **算法实现:** 视频中给出了计算 Merkle Root、生成 Merkle Proof 和验证 Merkle Proof 的详细算法步骤,包括如何处理奇数个哈希值的情况,以及如何根据索引确定配对的哈希值。
399
0
0
2025-11-08 10:55
二进制指数运算 | Solidity 0.8
本视频讲解了如何使用汇编语言编写二进制指数算法,该算法高效地计算x的n次方,并在MakerDAO稳定币中用于计算复利。视频分为几个部分,首先处理x为0的情况,然后处理x大于0的情况,包括算法编写、溢出检查和舍入误差检查。对于x为0的情况,当n为0时返回1,当n大于0时返回0。对于x大于0的情况,算法通过初始化z并使用循环计算x的n次方,同时进行溢出和舍入检查,确保计算的准确性。最终,算法成功编译并部署,示例计算结果验证了其正确性。
2248
0
0
2025-01-27 09:02
二进制指数运算的解释与7个例子
本文介绍了二进制指数算法,通过七个示例详细说明了如何高效计算x的n次方。传统方法是将x自身相乘n次,而二进制指数法则通过将n分解为最大的2的幂和余数,显著减少了乘法次数。例如,计算x的4次方只需进行2次乘法,而不是4次。通过不断将n除以2并更新结果,算法能够快速得出x的任意次方,展示了其高效性和实用性。
1904
0
0
2025-01-27 09:02
汇编溢出、下溢和定点数学 | Solidity 0.8
本视频介绍了如何使用汇编语言检查溢出和下溢,并进行定点数学运算。首先,讲解了如何在加法和乘法中检测溢出,强调了在汇编中需要手动处理这些情况。接着,介绍了定点数学的概念,展示了如何对定点数进行四舍五入以及如何进行定点乘法,确保在乘法时处理溢出问题。最后,通过示例演示了如何在合约中实现这些功能,包括加法、减法、定点乘法和四舍五入的调用与测试。
1969
0
0
2025-01-27 09:02
汇编循环 | Solidity 0.8
本文介绍了如何在汇编语言中编写循环,包括for循环和while循环的基本示例。首先,通过for循环实现从1到n-1的整数求和,并通过while循环实现计数器的递增。接着,展示了如何使用for循环计算x的n次方,其中n为2的幂,并处理了n为0和n不是2的幂的边界情况。最后,通过示例验证了函数的正确性,包括对有效输入和无效输入的处理。
2194
0
0
2025-01-27 09:01
汇编错误 | Solidity 0.8
在汇编中抛出错误的方法是调用revert函数,并传入参数p和s,表示内存的起始和结束位置。若条件不满足(例如输入x大于10),则会执行revert,所有之前的状态更改将被撤销。在示例中,我们将p和s都设置为0,表示不返回任何错误信息。通过这种方式,可以在合约中有效地处理错误。
2173
0
0
2025-01-27 09:01
汇编 If 和 Switch 语句 | Solidity 0.8
本文介绍了如何在Solidity的汇编中编写条件语句,包括if语句和switch语句。使用if语句时,条件表达式的结果为正数表示真,零表示假;汇编中没有else语句,因此需要另写if语句处理其他情况。通过示例,展示了如何使用if语句返回两个数中的最小值,以及如何使用switch语句返回两个数中的最大值。最终,代码成功编译并部署,验证了最小值和最大值的计算。
2199
0
0
2025-01-27 09:01
‹
1
2
3
4
5
6
7
8
›
SC programmer
关注
贡献值: 5
学分: 10
https://www.smartcontract.engineer/
0 关注
12 粉丝
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
提醒
检测到你当前登录的账号还未绑定手机号
请绑定后再发布
去绑定
×
编辑封面图
封面预览
取消
确认
×
创建课程
课程封面
编辑封面图
建议尺寸: 1920*1080
×
编辑封面图
封面预览
取消
确认