0xMomo | Bird🕊️
@0xmomonifty
| 职业 - 技术宅男 | 爱好 - 投研撸毛 | 梦想 - 链上小将 | 坚持不刷粉 | 勤奋、真诚、用心 | 返佣:币安 - https://t.co/qbAI5SgT0F | UX - https://t.co/LltO9E5tNF
1.4K Following    3K Followers
【 Arbitrage 学习笔记 - V3 池子 ticks 快速获取 】 有些时候进行 V3 pool 进行交换会计算代币输入输出的具体价格及数量会考虑到池子的 tick 数据以及当前 tick 的流动性状态,我之前参照大佬 Zacholme7/PoolSync 会使用从历史区块同步的方法来获取池子的 ticks 状态,但是我在实际使用中只要当前池子的 ticks 数据,并不需要知道历史的变化,所以再回去查看文档和查阅资料发现其实还有更好的方法。(原谅我还只是小白) ▰▰▰▰▰▰ Uni V3 Tick tickBitmap 首先回顾一下,在 v3 中使用 Bitmap 来存储 tick 的状态例如:100101001101001,1 表示有流动性,0 没有被初始化,两个字节来存储 (0x4a69)。用 word n 来划分子数组,word 中有 256 个位置。 ▰▰▰▰▰▰ 使用合约获取 ticks 信息 我之前使用区块事件扫描获取 mint/burn,其实在 V3 的 pool 有两个函数 tickBitmap() 和 ticks() 分别来获取位置信息和具体 ticks 信息,那么步骤就非常简单了,程序可以第一遍遍历计算 Bitmap word 数组大小如果 bitmap == 0 就跳过,第二遍获取有效的 word 中的 tick 数据。 但是如果调用 RPC 还是需要发送大量的查询,那么这时候我们使用链上合约来一次性获取我们想要的信息,让节点把我们这步骤都做了。当然你也可以加上 tokenName,decimals 等信息。
Show more
0
3
69
16