坚实的幻想

ON A CLEAR DISK YOU CAN SEEK FOREVER

Uniswap V4 探析(二) —— 通过 Hook 实现 TWAMM

上文介绍了 Uniswap V4 中的 Hooks 特性,Uniswap V4 开源的 V4-periphery 仓库中包含了几个 Hook 合约范例,其中大部分实现的功能比较简单,读者有兴趣可以自行阅读。 本文将介绍一个比较复杂的 Hook 合约:TWAMM.sol。它基于 Uniswap V4 Hook 实现了 TWAMM(Time-Weighted Average Market Ma...

Uniswap V4 探析(一) —— 新特性解读

Uniswap 官宣下一代 AMM Uniswap V4 的开发进展,并公开了白皮书和代码仓库。这次 V4 的白皮书仅仅只有 3 页,原因是 Uniswap 并没有对 AMM 的核心算法逻辑做太多修改,而是在 V3 的基础上,增加了一些新的特性,以满足更多的场景需求。本文将基于目前已开源的代码,来看看 V4 带来了哪些新的特性。 AMM 算法 在 AMM 算法层面,Uniswap V4 ...

眼见不一定为实 —— EVM CALL OPcode 中的 gas 陷阱

故事要从 Optimism Bedrock 说起,这些天在研究 Optimism Bedrock 的代码,在无意中发现了一个之前一直没注意到问题:在一些 edge case 下,EVM CALL(也包含 STATICCALL, DELEGATECALL) Opcode 使用的 gasLimit 可能和预期不一致。 一般情况下,这个设计不会对应用产生太大的安全风险,但是在 Optimism ...

Foundry Invariant Test 初探

Foundry 的文档终于更新了长期以来鲜为人知的 Invariant Test 功能。这个功能在过去几个月中一直在 Foundry 中是一个未被完全文档化的神秘功能,只在少数项目中得到了使用。但是,使用好 Invariant Test 可以显著提高合约的可靠性,可以预见到,在不久的将来,Invariant Test 将成为一名合约开发的必备技能之一。 我们来看看 Foundry 作者和其...

Curve Stablecoin 非权威解读

Curve Stablecoin 是 Curve 团队设计的新一代稳定币协议,相较于传统的稳定币协议或借贷协议如 makerDAO, Liquity, Compound 等,Curve Stablecoin 主要的改进在于使用自带 AMM,更高效的解决了清算问题,从而很大程度降低了协议产生坏账的风险,同时这个 AMM 也能在清算时帮助消化被清算的资产,从而降低大量资产卖出对市场带来的波动性。...

EVM 自产生程序(quine)

这是来自 paradigm CTF 的一道题,题目要求是给出一段 evm bytecode,要求这段 bytecode 在 deploy 之后被调用的输出,正好和它原始的 bytecode 一摸一样。同时题目还限制了这段 bytecode 不可以使用 CODECOPY, CALL, DELEGATECALL 等指令。 通常这类程序被称为 quine program,在 wiki 中有很多其...

下一代借贷协议 —— Silo Finance

已有借贷协议的问题 资金效率和安全性之间的矛盾 以 COMP 和 AAVE 为首的借贷市场,都会以 DAO 的形式来管理借贷市场的可用的借贷资产。为了安全性,往往只有足够去中心化并且有足够多流动性的 token 可以被加入到借贷市场中,但是用户往往又希望借贷平台上有更多的借贷代币。 由于 COMP/AAVE 中的借贷都是共享借贷池的,随着借贷市场中代币的增多,系统的安全性也会必然随之降...

How to fork a CHI gastoken?

Fork CHI gastoken 的想法来自于和一位网友的对话。这位网友打算 fork 一个自己的 CHI gastoken,并优化其中的某些步骤,来让自己的合约的 gas 开销更加低一些。但是他在 fork CHI 代码部署之后,却发现无法成功执行 CHI.free() 操作。正好我在之前学习 gastoken 原理的时候看过 CHI 的具体实现,就尝试帮他解决了这个问题。 我觉得这个...

Solidity 中的对数计算

背景 在进行 solidity 开发时,某些场景可能需要进行对数的计算。对数计算虽然在通用编程领域已经有成熟的解决方案(几乎所有编程语言都有相关的内置库或者第三方库来实现)。但是在 solidity 中没有 floating/fixed point number(fixed point number 在 solidity 0.8 版本中仍处于 not fully supported 阶段)...

Uniswap v3 的小彩蛋:NFT 和 LP 迁移工具

Alpha leak 从 uniswap v3 公开初版的代码到现在已经一个多月了,这期间 uniswap-v3-periphery 仓库的合约更新了很多代码。据粗浅观察,主要有以下 2 个改动: 优化了 LP Token,由之前的普通 ERC721 token 变成了带动态效果 SVG 图片的 NFT token 增加了一个 migrator 合约,可以将 uniswap v...