正在 Uniswap v4 上執行的那些 hook
每一個 v4 資金池都可以指定一個 hook:一份合約,PoolManager 會在一筆兌換、一次存入、一次取出中的固定時刻呼叫它。至於是哪些時刻,那不是誰作出的承諾。它被挖進了這個 hook 的地址裡——低十四位就是那份清單,而協議拒絕為清單之外的任何事去呼叫這份合約。
這就是這一頁所知道的全部,而它之所以值得知道,恰恰因為它是被強制執行的而不是被聲稱的。一個 hook 拿這項權限做了什麼,寫在它的程式碼裡。本應用不讀程式碼,也不儲存任何人背書過的 hook 名單——那兩樣都會是它無法核對的說法,卻擺在它能核對的數字旁邊。
讀自本週最活躍的那些 v4 日子裡的資金池——共 250 個。其中 32 個指定了 hook;218 個沒有指定,行為和一個 v3 池子一樣。
按這些池子裡有多少個執行著各個 hook 來排序。那是一個池子數量,除此之外什麼也不是:跑在很多池子上的 hook,只是有人用它部署了很多池子。
0xcb69d5abe0589af4c57b0dcca292980d5e52c0c0
執行在其中 5 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
協議對這些東西自己的叫法
0x0000113dcf4add69999fad8f20f2b63f979bfcc0
執行在其中 2 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
圍繞存入與取出
- 在每一次存入之前執行,它可以在此拒絕這次存入。
- 在每一次存入之後執行,它在此仍然可以拒絕這次存入。
在這個池子被建立時
- 在這個池子被建立之前執行一次。那已經發生過了。
- 在這個池子被建立之後執行一次。那已經發生過了。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeAddLiquidity
- afterAddLiquidity
- beforeInitialize
- afterInitialize
0x0000000aa232009084bd71a5797d089aa4edfad4
執行在其中 2 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
當一個提供者取出時,這個 hook 會執行,並且被允許拒絕一次取出。它究竟有沒有這樣做過,從這裡是無從得知的。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之後,從中抽取一份。
圍繞存入與取出
- 在每一次存入之前執行,它可以在此拒絕這次存入。
- 在每一次取出之前執行,它可以在此拒絕這次取出。
在這個池子被建立時
- 在這個池子被建立之前執行一次。那已經發生過了。
- 在這個池子被建立之後執行一次。那已經發生過了。
圍繞捐贈
- 在向這個池子的提供者捐贈之後執行,它在此仍然可以拒絕這次捐贈。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeRemoveLiquidity
- beforeInitialize
- afterInitialize
- afterDonate
0x8fb66c6e0f3cbb25001e0f1c0352cc888cff6444
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之後,從中抽取一份。
圍繞存入與取出
- 在每一次存入之後執行,它在此仍然可以拒絕這次存入。
協議對這些東西自己的叫法
- afterSwap
- afterSwapReturnsDelta
- afterAddLiquidity
- beforeInitialize
0x2c67eba8a50af0db5fba55f725247a75cbda6444
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之後,從中抽取一份。
圍繞存入與取出
- 在每一次存入之後執行,它在此仍然可以拒絕這次存入。
協議對這些東西自己的叫法
- afterSwap
- afterSwapReturnsDelta
- afterAddLiquidity
- beforeInitialize
0xd53006d1e3110fd319a79aeec4c527a0d265e080
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
協議對這些東西自己的叫法
- beforeSwap
- beforeInitialize
0xa4e6f5500e88691fdcb289aa0e99067481434880
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
協議對這些東西自己的叫法
- beforeSwap
- beforeAddLiquidity
0xe54082dfbf044b6a8f584bdddb90a22d5613c440
執行在其中 1 個上
它被允許做什麼
圍繞兌換
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
圍繞存入與取出
- 在每一次存入之後執行,它在此仍然可以拒絕這次存入。
協議對這些東西自己的叫法
- afterSwap
- afterAddLiquidity
0xc2988a37d611779ad34b561231ee33603d15a0cc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeInitialize
0xafed2c6e0d906520ca17143a8918ce6d54b128cc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeInitialize
0x890681cff5ad2069f020027f41f5f68f6a292000
執行在其中 1 個上
它被允許做什麼
協議對這些東西自己的叫法
0x0c02c38d66d777ba1c0387e639c2fb2d2440a8cc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeInitialize
0xfaaad5b731f52cdc9746f2414c823eca9b06e844
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- afterSwap
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeInitialize
0x3e1ad2f53882c3b8a04706a86b127d71d4e480cc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
0xb8d9477eb6ef5f0df5219cf0c8130dd7e520e0cc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeInitialize
0xcf4d29f14cc585ddd1167f956092852af844e040
執行在其中 1 個上
它被允許做什麼
圍繞兌換
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
協議對這些東西自己的叫法
- afterSwap
- beforeInitialize
0x47f1c7c7d5bd2039d9d3a997d91569869edf1080
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
協議對這些東西自己的叫法
- beforeSwap
- afterInitialize
0xe705dd22bedbe0adf1ed07b609fe3ccee46c00cc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
0xbac4827c28ab5871a830671df53bd94589d3c0cc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
0xc6c965bd164c483e87d0b550671798e9a3602840
執行在其中 1 個上
它被允許做什麼
圍繞兌換
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
協議對這些東西自己的叫法
- afterSwap
- beforeAddLiquidity
- beforeInitialize
0x02871b585ee8e77d987a74d925d47cf1910720cc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeInitialize
0xb9596ddf5778cf53da85bf5cfe619210d25dd0c0
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- afterInitialize
0xd3efcb655ef4d7ac9f8140fe4b7e833c46b728e0
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
圍繞捐贈
- 在向這個池子的提供者捐贈之前執行,它可以在此拒絕這次捐贈。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeAddLiquidity
- beforeInitialize
- beforeDonate
0xe8d6181e99aa0249e51d02d21cdf5cee20fc1044
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- afterSwap
- afterSwapReturnsDelta
- afterInitialize
0xe3bf665a9545d34d061fa5bd7a0676c81b5aaacc
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
當一個提供者取出時,這個 hook 會執行,並且被允許拒絕一次取出。它究竟有沒有這樣做過,從這裡是無從得知的。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之前,從中取走代幣,或者投入它自己的代幣——所以這裡的一筆兌換不一定沿著這個池子自己的曲線走。
- 在池子給一筆兌換定價之後,從中抽取一份。
圍繞存入與取出
- 在每一次存入之前執行,它可以在此拒絕這次存入。
- 在每一次取出之前執行,它可以在此拒絕這次取出。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- beforeSwapReturnsDelta
- afterSwapReturnsDelta
- beforeAddLiquidity
- beforeRemoveLiquidity
- beforeInitialize
0x4440854b2d02c57a0dc5c58b7a884562d875c0c4
執行在其中 1 個上
這個 hook 被允許改變一筆兌換的成本或收益。任何從價格歷史推出來的數字——一個建議區間、一個費率檔、一個與單純持有的對比——都假設這個池子按它聲明的收費、按曲線所說的支付。在這裡這兩個假設都不安全,而這一切在一串價格序列裡都看不見。
它被允許做什麼
圍繞兌換
- 在每一筆兌換之前執行,它可以在此拒絕這筆兌換,並且在費率為動態的池子上,設定這筆兌換要付多少。
- 在每一筆兌換之後執行,它在此仍然可以拒絕這筆兌換。
- 在池子給一筆兌換定價之後,從中抽取一份。
協議對這些東西自己的叫法
- beforeSwap
- afterSwap
- afterSwapReturnsDelta