撰文:Beosin
今年的 Memecoin 一直是加密市場以及各大公鏈生態的重點。從年初起,Solana 生態中涌現了許多漲幅驚人的 Memecoin 和 Memecoin 發射平臺 Pump.Fun,吸引了大量用戶參與發行和交易各種 Meme 代幣。其它生態的 memecoin 交易也異常火熱,如 TRON 生態的 SunPump,兩週協議淨賺百萬美元;BNB Chain 推出了 「Meme 創新之戰」。
隨着 memecoin 熱潮而來的問題是用戶需要避坑各種潛在的安全風險。此前,Beosin 已針對 Memecoin 發射平臺的安全性進行了詳細分析,提前對 Dexx 這類發射平臺的中心化風險做了警示,並審計了 Tokr.fun、Pumpup、Pump404 等多個 Memecoin 發射平臺。
今天,我們將從安全角度分析在 memecoin 中常見的風險與作惡手段,幫助沒有技術基礎的用戶也能掌握一些識別相關風險的能力,避免資金受損。
中心化風險
近期,Dexx 事件再一次提醒用戶需要注意平臺的中心化風險。此部分,我們將針對當前最大的 memecoin 發射平臺 Pump.Fun 進行分析:
通過鏈上交易,我們可查找到 Pump.Fun 的合約地址爲 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P。該合約代碼並未開源,由多籤地址 (7gZufwwAo17y5kg8FMyJy2phgpvv9RSdzWtdXiWHjFr8) 控制。
但查詢該多籤地址,目前實際是由單一地址 (4zJkeipCFGvfcJvKm4TY57ED9uEdL3sBRvs8TPdZKG5Q) 控制,存在單點風險。
Link: https://solscan.io/account/6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P
5 月 17 日,Pump.Fun 因運營問題導致私鑰泄露,造成了 190 萬美元損失。項目私鑰的管理以及多籤的應用在防範單點故障上尤其重要。
Pump.Fun 在進行 memecoin 發行時,用戶需要在 「內池」 通過 $SOL 鑄造代幣,這一過程的代幣價格由 Bonding Curve(聯合曲線)決定。對於每一個 memecoin,Pump.Fun 都會創建一個對應的 Bonding Curve 程序,其中的數據字段如下:
其中 tokenTotalSupply 設置爲 10 億枚,virtualSolReserves、virtualTokenReserves、realTokenReserves 和 realSolReserves 作爲 AMM 的參數用於計算代幣價格。當其他用戶在 「內池」 鑄造了 8 億枚代幣後,complete 字段變爲 true,隨後該 memecoin 在 Raydium 流動性池公開交易。
檢查 Pump.Fun 發行的任意 memecoin 合約數據,我們可以看到其 update Authority 的特權地址爲 Pump.fun Token Mint Authority(TSLvdd1pWpHVjahSpsvCXUbgwsL3JAcvokwaKt1eokM),負責鑄幣。「mint」 字段爲對應的 memecoin 合約地址及代幣信息。
這些 memecoin 合約不存在代幣拓展功能,是最簡單的 SPL 代幣。
因此,不存在特權地址通過代幣拓展中的 Permanent Delegate、TransferFee 等功能進行作惡,對參與 memecoin 交易的用戶造成損失。
$Cheems 事件爭議
11 月 25 日,Binance 宣佈上線 Cheems 合約。其代幣應聲上漲 35%,然後不到 1 分鐘暴跌超過 60%,引起了大量的爭議。
分析鏈上 $Cheems 的代幣交易,我們可以發現拋售代幣的地址爲 0xbb8365B1BA2462ffDce9C894Ada84478f474Fefc。通過 Beosin KYT 分析該地址,其結果如圖所示:
11 月 25 日,該地址通過 Pancakeswap 和 OKX DEX 聚合器,在 1 分鐘內賣出了 3312 億 $Cheems,獲得 406.21$BNB,隨後將地址中所有 $BNB 存入 Binance。
Beosin KYT資金流向圖雖然
有很多用戶質疑該地址爲 「老鼠倉」,但通過 KYT 對該地址過往交易的分析,這個地址可能是 Smart Money Address,有多次波段交易:
自 11 月 18 日起,該地址開始建倉 $Cheems,在建倉過程中也有不斷賣出。11 月 18 日,該地址先是購買了約 1310 億 $Cheems,4 小時後,便賣出了 413 億 $Cheems。11 月 21 日,該地址還從 Gate.io 交易所提出 3795 億 $Cheems,2 小時後,又在鏈上賣出 1758 億 $Cheems。11 月 22 日與 23 日,也有大量買入,部分賣出的操作。資金整體流向如下圖所示:
Beosin KYT 資金流向圖
本次爭議中的相關地址爲
0xbb8365b1ba2462ffdce9c894ada84478f474fefc
0x0d0707963952f2fba59dd06f2b425ace40b492fe
0xbff62cee932fe7496a88c9193e9ba3fd5eeff46d
除了平臺風險與鏈上 PVP 外,用戶在進行 memecoin 的交易時還可能遭遇 「貔貅盤」 詐騙。之前,Beosin 已通過案例幫助用戶瞭解此類貔貅盤騙局和預防措施,以下是更爲全面的有關 memecoin 騙局的梳理:
仿盤假幣
在各條鏈,每天都有大量新的 memecoin 上線,似乎到處都是暴富的機會。但實際上仿盤項目層出不窮,用戶難以分辨代幣的真僞。
許多 memecoin 的部署者會複製已經爆火項目的名稱和代幣標識,創建相同名稱的代幣合約。用戶可能因爲沒有仔細檢查代幣的合約地址而誤入仿盤,甚至詐騙盤、貔貅盤,導致代幣無法賣出。
此外,加密社區和代幣發行方就 memecoin 的大小寫之爭也導致了相關代幣價格的暴漲暴跌。近期的 $NEIRO 與 $neiro、$ELIZA 和 $eliza 的爭議和價格波動表明了 memecoin 的超高風險性,用戶需瞭解相關 memecoin 的信息、社區反饋並小心項目方通過消息操縱市場。
限制賣出
在用戶購買 memecoin 的經歷中,可能遇到過類似 「貔貅盤」 的騙局,購買的代幣無法賣出或是難以賣出。以下是常見的騙子通過合約代碼限制用戶賣出的方式:
(1) 黑名單 / 白名單
代幣發行方可以在代幣合約中設置黑名單 / 白名單功能以限制代幣的交易,比如用戶地址被加入黑名單,那麼該用戶可能就無法調用代幣合約中的 transfer () 或者 transferFrom () 轉移代幣。
非黑名單的地址才能進行代幣轉移
(2) 修改餘額
代幣發行方還可以通過智能合約操控用戶的代幣餘額,將用戶的代幣餘額改爲極低的數值。如果餘額的更新僅記錄在合約內部,那麼受害者在區塊鏈瀏覽器上仍能看到自己持有的代幣,但是實際上無法出售超過合約記錄數量的代幣。如果受害者的餘額更新上鍊了,那麼用戶會發現自己購買的 memecoin 減少甚至餘額爲 0。
以下是將黑名單地址的餘額設置爲 0 的 Solidity 代碼示例:
除 EVM 生態外,Solana 也存在類似的修改餘額的功能 —— 代幣程序的 Permanent Delegate 拓展:
Permanent Delegate 是 Solana 官方對代幣功能的擴展,管理員在任何時候都有權轉移或銷燬代幣。其目的是爲了適用於部分應用場景,例如代幣回收、穩定幣監管。在創建代幣時,創建者可利用 createInitializePermanentDelegateInstruction 指令來初始化 permanentDelegate。
由於 Permanent Delegate 的權限過大,一些黑客利用該拓展功能發行代幣,吸引用戶購買其代幣後,通過銷燬或轉移獲益:
使用 Permanent Delegate 銷燬代幣
(3) 交易門檻
在用戶買入某些 memecoin 後,其無法賣出的原因是合約中設有嚴苛的賣出門檻:要求用戶必須超過設定的代幣數量(而這個代幣數量遠超用戶的代幣持有量)才能賣出或是需要扣除高額的交易稅。
如下圖的代碼示例,合約開發者可改變 amountToBurn 的參數設置交易稅,當參數設置爲 2 時,用戶交易需要扣除 50% 的代幣數量。
Solana 的代幣拓展中也存在 TransferFee 這一功能,用於向代幣的每筆交易進行收稅。配置 TransferFee 需要設置以下字段:
Fee in basis points: 每次轉賬收取的費用,以基點爲單位。
Maximum fee: 轉賬費用上限。
Transfer fee authority: 可以修改 TransferFee 的地址
Withdraw withheld authority: 可以轉移代幣賬戶中扣留的代幣的地址
由於存在轉賬費用上限,所以 Solana 中通過設置交易稅費從而實現貔貅盤的方式並不常用,更多是通過代幣轉移或是代幣銷燬導致用戶蒙受損失。
(4) 暫停交易
代幣的發行方可以在合約中控制合約的暫停狀態以限制代幣的交易,一旦合約進入暫停狀態,合約的轉賬功能將全部無法使用,用戶也無法進行交易。
比如下圖的 Solidity 代碼示例,轉賬只有在合約未處於暫停狀態時纔會調用_update 更新用戶餘額。
(5) 最短持幣時間
在用戶購買 memecoin 後,需要最短持有一段時間過後纔可以再進行交易。然而該時間由代幣的發行方進行設置,並可以任意修改。他們可以通過將最短持有時間修改爲極大值從而使用戶無法交易。
比如下圖的 Solidity 代碼部分示例,轉賬是需要滿足當前轉賬時間大於等於用戶上次更新時間 + 合約中設置的延遲時間。
獨特的手續費
在用戶購買 memecoin 後,與其他用戶進行交易時,不會收取手續費。而當其通過 DEX(如 Uniswap)進行賣出時,則會收取手續費,除賣出以外,用戶添加流動性或者參與質押的收益也會受到影響。
比如下圖的 Solidity 代碼示例,轉賬只有在 to 地址是合約地址的情況下才會對代幣交易收稅。
或者手續費的收取並非從本次轉賬金額中扣除,而是額外減少發送者的餘額,這種方式一旦處理不當,則會嚴重影響到 DEX 中的價格,導致代幣價值歸 0。
額外減少 from 地址的餘額
增發代幣
增發代幣是常見的實現 Rug Pull 的方式。因爲代幣合約的 owner 或是特權地址擁有鑄幣權限,它們可以通過增發代幣並賣出進行獲利。這在 EVM 生態、Solana、TON 中都是常見的潛在風險,以下是 TON 某個 Jetton 代幣的 mint 函數,存在增發機制:
代幣分配中心化
代幣分配中心化問題是區塊鏈項目中的一個常見風險,代幣的大部分供應被項目方團隊所掌控,可以通過代幣投票在鏈上治理中操控關鍵決策或者通過大額買賣操控市場價格等方式影響用戶的資產。
如下圖的 Solidity 代碼所示,代幣在部署時會將所有代幣總量分配給合約的部署者。
代理升級
代幣合約使用代理升級模式是一種常見的智能合約設計模式,可以通過代理合約實現邏輯的升級,而不改變存儲合約的數據結構。雖然這種模式帶來了靈活性,但同時也存在一些潛在的風險和危害。代幣的發行方可以隨意更改合約邏輯,導致代幣持有者資產的丟失或被盜。
如下圖的 Solidity 代碼所示,合約的 Admin 能夠修改實現合約的地址,一旦修改爲錯誤的合約甚至惡意合約,那麼將導致用戶資產的丟失或者被盜。
如何避坑?
Memecoin 熱潮下的騙局層出不窮,如果用戶未多加辨明,便很有可能落入相關騙局,資金受損。因此,Beosin 安全團隊建議用戶:
1. 理性看待 Memecoin 的暴富效應與 KOL 宣傳效應。在一個全新的代幣上線 DEX 後,用戶需要保持理性,不產生 FOMO 情緒,不盲目跟風。
2. 不相信 「內部信息」 或 「機密消息」。這些通常是騙局設置陷阱的手法,目的是引誘用戶在沒有進行信息篩選和調研的情況下冒險投資。
3. 在購買代幣前,用戶應檢查以下關鍵點:
代幣合約是否開源
是否有審計報告
是否有黑 / 白名單機制
是否有交易稅,交易稅的具體收取方式
是否具有暫停機制
是否具有如限制交易量,最小持幣量,最短持幣時間等特殊機制
合約 owner 權限可以調用的函數,權限是否過高
合約是否使用代理模式
合約的 owner 權限如何管理,是否多籤或者放棄
Beosin 此前已對 Tokr.fun、Pumpup、Pump404 在內的多個 memecoin 發射平臺和代幣合約進行了詳盡的安全審計,確保其合約代碼的安全性、 業務實現邏輯的正確性,保障項目和用戶的資金安全。
4. 許多交易平臺和風險監測工具會爲用戶列明代幣合約檢測項,參考這些信息有助於用戶提高識別騙局的準確率。用戶在進行交易前可參考多個安全工具的檢測結果,以下是常用的風險檢測工具:
Honeypot: https://honeypot.is/
Token Sniffer: https://tokensniffer.com/
OKX: https://www.okx.com/zh-hans/web3/dex-market
GoPlus: https://gopluslabs.io/token-security
De.Fi: https://de.fi/scanner
Beosin Alert: https://chromewebstore.google.com/detail/beosin-alert/lgbhcpagiobjacpmcgckfgodjeogceji
總結
本文我們總結了 memecoin 常見的作惡方式,從中可以發現,memecoin 儘管充滿了機遇與可能性,但也伴隨着各種各樣的陷阱。用戶必須對 memecoin 的交易保持高度的警惕性和謹慎性,以降低資金損失的風險。在 Web3 的世界裏,安全永遠是第一位的。