粉塵攻擊:收到不明小額幣怎麼辦
發布於: 2026年9月20日
另有以下語言版本:English
您打開錢包,裡面多了一筆您沒有要求的錢:可能是幾百聰,也可能是一個您從未聽過的代幣。這通常被稱為粉塵攻擊。第一件值得說明的事是,沒有任何東西被拿走,而且光憑發送者手上的東西也拿不走任何東西。真正重要的是接下來您做什麼,而這個答案在比特幣上,與在以太坊、Solana 或波場上並不相同。我們經營 notrace.exchange,一個加密貨幣混幣服務;下面有一節會直接說明,為什麼混幣器並不是這個問題的解答。
粉塵究竟是什麼
粉塵是小到不值得花用的輸出:把它移走所付的手續費,比它本身還貴。Bitcoin Core 並沒有為此寫死一個數字,而是依據每個輸出的大小與一個叫 dustRelayFee 的費率,在 GetDustThreshold 裡逐一計算門檻。原始碼的註解把算式寫得很清楚:一個可花用的非隔離見證輸出佔 34 位元組,花它至少還需要 148 位元組的輸入,所以粉塵就是低於 182 個虛擬位元組在該費率下的成本——182 × 3,000 ÷ 1,000,在預設值下等於 546 聰。原生隔離見證的 P2WPKH 輸出算出來則是 294 聰。
那個預設費率寫在 policy.h 裡,是每虛擬千位元組 3,000 聰,旁邊還附了開發者的提醒:改動粉塵門檻等於改動哪些交易算標準交易,應該謹慎而且很少做。還有第三個數字屬於較新的輸出型別——BIP 433 順帶提到,在臨時粉塵政策下,同一條公式算出 Pay-to-Anchor 輸出的門檻預設是 240 聰,而且帶著這種粉塵的交易手續費必須為零。
所以 546 並不是「比特幣的粉塵上限」。它只是這條公式在一種輸出型別、一個費率下算出來的結果。您在這個主題上讀到的每一個頁面,都把它印成常數。
從這條規則所在的位置,還能再推出兩件事。粉塵屬於轉發政策,不是共識規則:礦工照樣可以把更小的輸出打包進區塊。而且這條政策一直在變。現在的 Bitcoin Core 允許交易裡出現一個粉塵輸出,而不是完全不允許,但這只存在於一個很窄的例外裡——它要求該筆交易完全不付手續費,而且這筆粉塵必須由同一個套件中的子交易花掉。一筆向陌生人地址噴灑粉塵、同時正常付費的交易,依然是非標準交易。
粉塵本身不會告訴任何人任何事。Exodus 的說明頁在這個關鍵詞上排得很前面,它寫得很直接:一個粉塵輸出既不會揭露您的身分,也不會讓發送者碰到任何資金。維基百科的「粉塵攻擊」條目卻說了相反的話——說受害者試著把代幣換成錢時,發送者就能透過附在代幣上的智慧合約進入錢包。那句話引用的是一篇清單式報導,描述的其實是代幣授權詐騙而不是粉塵攻擊,並且與所有寫過這個題目的錢包廠商互相矛盾。那個條目只有四條引用,是一則小作品條目,而它在這個問題的各種問法上都排在前十,搜「crypto dust」時排第二。
粉塵為什麼在比特幣上有效
這種攻擊所依靠的資訊外洩,比特幣白皮書自己就寫了出來。第 10 節談隱私時承認,多輸入的交易「必然揭露這些輸入屬於同一個主人」。分析人員把它叫做共同輸入歸屬啟發法。它不是對使用習慣的猜測:發送者必須握有每一個輸入的私鑰,所以這個推論來自協議本身。
真正讓粉塵值得發送的,是這條啟發法具有傳遞性。在 2013 年 IMC 會議上發表的 A Fistful of Bitcoins 裡,Meiklejohn 等人把後果寫明白了:如果地址 A 和 B 是同一筆交易的輸入,而 B 和 C 是另一筆交易的輸入,那麼 A、B、C 都屬於同一個使用者。把粉塵和您自己的幣一起花掉一次,您連起來的不是兩個地址,而是把收到粉塵的那個地址,焊到啟發法早已歸成一群的所有東西上。
Bitcoin Wiki 在這個行為還沒有行銷名稱之前就記錄了它,而且並不稱它為粉塵攻擊。它叫做強制地址重用,維基還直接指出「dust attack」這個叫法用在這裡並不正確。它給的建議就是全部的防禦:落在一個已經用過、餘額為零的地址上的幣,永遠不要花。
這種事多常發生,又是誰在做
到了這裡,故事會比那些描述它的頁面平淡得多。
期刊之外,公開測量中覆蓋最廣的一份屬於 Jameson Lopp。2021 年 3 月,他為了寫一份粉塵與垃圾交易風暴的歷史,從自己的節點掃了 6.2 億筆交易、約兩 TB 的資料。他列出發送粉塵的四種動機,去匿名化排在最後,並且說他還沒有見過令人信服的證據,顯示分析公司會這樣做。他的論點比這句保留更有份量:歸群啟發法本來就不需要幫忙也管用,所以大規模撒粉塵換來的額外隱私損失其實很小。
那些公司自己也同意。2020 年 8 月,Chainalysis 與 CipherTrace 都公開告訴 CoinDesk,它們在分析中並不使用粉塵;Chainalysis 還補充說,粉塵更常被調查人員用來追查被盜資金。排在本文前面的那些搜尋結果,沒有一個提到這件事。
有兩個撒粉塵的人留下了紀錄,而且兩個都說自己是在打廣告:
- BestMixer,2018 年底。這家混幣服務稱之為自己發明的新廣告技術。2018 年 12 月創造了「Crypto Dusting」這個說法的 CipherTrace 當時就寫道,把這場行動讀成對隱私的攻擊是一種誤解。Lopp 在鏈上數過這場行動:61 筆交易、半個比特幣的粉塵、0.03 BTC 的手續費。
- EMCD,2019 年 8 月。幣安在 8 月 10 日回報,它大約 50 個萊特幣地址各收到 0.00000546 LTC,並視之為大規模粉塵行動的一部分。Glassnode 共同創辦人把真實數字放到接近 30 萬個地址,而不是 50 個,還發現 4 月有更早的一輪從來沒有人報導。發送者後來證實是一家俄羅斯礦池 EMCD,它主動聯絡幣安,說自己只是在打廣告。轉述這件事的幣安學院 James Jager 補了一句:是否另有動機,從他或任何人的角度都看不清楚——而且撒粉塵的人,未必就是事後讀取資料的人。
經濟帳說明了這件事為什麼長成這個樣子。2020 年有一場替通訊軟體打廣告的行動,在 146 筆交易裡造出約 84,000 個粉塵輸出,成本大約 1.147 BTC,其中花在手續費上的錢是花在粉塵本身的三倍。大規模撒粉塵是一筆廣告預算,不是情報行動。
還有一件沒有人說的事:針對粉塵攻擊本身的同行評審測量只有一份,而寫這個題目的人幾乎都不用它。2023 年發表在 Applied Network Science 的 Is Bitcoin gathering dust? 中,Loporchio 等人從鏈上取出 1,705,560 筆製造粉塵的交易,辨認出 89,102 筆形狀符合一次成功攻擊的消耗粉塵交易——約佔所有消耗粉塵交易的 44%——然後把地址歸群跑了兩遍,一遍帶著這些交易,一遍不帶。如果那些攻擊沒有發生,有 414,236 個地址根本不會被歸到一起。他們自己的結論是:像攻擊那樣的交易在粉塵中只佔少數,對打破地址匿名性的作用卻大得不成比例。
其餘嚴謹的數字量的是別的東西——發表在 Royal Society Open Science 的Another coin bites the dust 中,Pérez-Solà 等人取了 2018 年 2 月 6 日、區塊 507,964 的比特幣未花費輸出快照,發現在每位元組 116 聰的費率下,超過一半的未花費輸出(3,020 萬個)算得上粉塵,其中 5,617 個因為面額為零,在任何費率下都是粉塵。那是一份關於「存在多少粉塵」的研究,不是關於「多少人被撒了粉塵」。所以當某個頁面丟給您一個關於粉塵的數字,請先問它是從哪裡來的。
在以太坊、Solana 和波場上,這個機制並不存在
一個以太坊帳戶只有四個欄位:nonce、餘額、程式碼雜湊與儲存根。沒有一個欄位記錄餘額裡哪一部分是從哪裡來的。那裡沒有一枚一枚可以挑選的幣,也就沒有東西可以「一起花」,整個攻擊所依賴的那個推論失去了對象。
這不是從沉默裡推出來的結論。在 2020 年金融密碼學會議上發表的 Address clustering heuristics for Ethereum 中,Friedhelm Victor 指出,共同輸入歸屬啟發法無法套用在帳戶餘額模型上,而且沒有任何一條比特幣的歸群啟發法可以直接搬過來。在以太坊上真正把地址連起來的是別的東西:交易所的存款地址、重複參與同一批空投,以及在您自己控制的兩個地址之間做代幣授權——論文把最後一項稱為自我授權:在 732 萬筆授權事件裡,發生在兩個活躍外部帳戶之間的只有 338,510 筆,而論文也說這條啟發法抓到的地址少到在圖上看不見。這些以太坊自有的啟發法合起來,歸群了 17.9% 的活躍外部帳戶。
這把常見的建議倒了過來。在帳戶型鏈上,風險不在於收到粉塵,而在於您簽了什麼。
而且那些鏈上收到的東西,多半連比特幣意義上的粉塵都不是。2025 年 USENIX Security 上發表的地址投毒研究把投毒轉帳分成三種,只有一種動的是真正屬於您的東西。金額為零的轉帳偽造出一個 Transfer 事件,讓您自己的紀錄看起來像是您付款給了一個長相相似的地址。ERC-20 要求把零金額的轉帳當作一般轉帳處理,所以這種紀錄沒辦法直接禁掉;而偽造出來的發送方,來自常見實作允許呼叫者隨意指定發送方。至於偽造代幣,合約是攻擊者自己寫的,所以它可以模仿任何代號,也可以代替任何人搬動「您的」餘額。作者在以太坊上看到的 1,730 萬筆投毒轉帳中,真正的小額轉帳只有約 30 萬筆。
同一篇論文把兩種攻擊並排放在一起,分別說明了它們的目的:粉塵攻擊瞄準的是去匿名化,地址投毒瞄準的是讓您付錯地址。在以太坊與 BNB 智慧鏈上、從 2022 年 7 月 1 日到 2024 年 6 月 30 日的兩年裡,它數到 2.7 億次嘗試、1,700 萬名受害者,其中 6,633 次得手,損失至少 8,380 萬美元——這是下限而不是總數,因為它沒有計入那筆著名的 6,800 萬美元 WBTC 事件。以太坊上的成功率是 0.01%。這就是濫發垃圾訊息,定價也像濫發垃圾訊息:BNB 智慧鏈上得手一次的中位數是 85 美元,以太坊上是 2,169 美元。
光是數量就足以在數據裡看見。Coin Metrics 檢視了 2025 年 11 月到 2026 年 1 月之間、以太坊上 2.27 億筆 USDC 與 USDT 的餘額變動,發現其中 9,760 萬筆(43%)不到一美元,8,590 萬筆不到一美分;十個發送地址加起來就超過 850 萬筆粉塵轉帳,最忙的那一個觸及超過一百萬個地址,總金額卻只有大約 5,175 美元。這份數據值得小心引用,因為它被引用得很糟:Coin Metrics 說它量到的成長大部分反映的是真實使用,其中一部分才與地址投毒有關。您在別處還會看到同一件事被歸因於「2025 年初」的某次以太坊升級,而那不可能成立——Fusaka 是 2025 年 12 月 3 日上線的。關於粉塵的數字在轉述中很容易走樣,請自己核對。
每條鏈還有自己的細節:
- Solana。任何人都可以替您建立並支付一個關聯代幣帳戶——代幣文件明說「誰來建立使用者的關聯代幣帳戶並沒有限制」——而那筆租金押金就掛在您名下。垃圾代幣帳戶可以關閉並取回租金,但前提是餘額為零,所以順序是先銷毀、再關閉。為垃圾 NFT 做了工具的 Phantom 說,那些東西銷毀從來不危險,與之互動才危險。
- 波場。一個地址要等到有人向它轉入價值,才會真的存在於鏈上,所以粉塵可以直接把帳戶建出來。啟動一個帳戶會燒掉發送方的一項網路參數,目前主網是 1 TRX,而且可以由委員會投票更改;如果發送方沒有質押得來的頻寬,還要再付一筆。在波場上對一個全新地址撒粉塵,攻擊者是要付錢的。
該怎麼做
在比特幣上,整個防禦只有一句話:不要花它。其餘的問題只在於您的錢包是否讓您做得到。
- Bitcoin Core。先在設定裡打開「Enable coin control features」,然後用右鍵選單的「Lock unspent」,或者
lockunspent這個 RPC。這裡有個陷阱:預設情況下這個鎖只存在記憶體裡,節點重啟之後就沒了。 - Electrum。功能叫凍結。常見問題把它描述成地址層級的操作,但文件落後於程式——原始碼裡除了地址版本,還有
set_frozen_state_of_coins,也就是說單一輸出是可以凍結的,而這正是面對一筆粉塵時您需要的。 - Sparrow。選單項目就叫「Freeze UTXO」和「Unfreeze UTXO」,被凍結的輸出會在選幣之前先被濾掉。這些只出現在原始碼裡:官方文件的目錄既沒有凍結,也沒有粉塵,只有常見問題裡講到選幣本身。
- Wasabi。唯一一個把設定直接用這種攻擊命名的錢包:dust attack limit,低於這個門檻、又是從別人錢包送到一個已用過地址的幣,根本不會顯示出來。它的文件也用強制地址重用的正式名稱描述這件事。
- Trezor Suite。在 Send 分頁有一個「Coin control」按鈕,逐筆交易生效;關掉之後錢包就會自己挑輸出。至於有沒有永久凍結,那個頁面沒有說。
- Ledger Live。選幣功能在 2.11.1 版加入,公告發於 2020 年 9 月 16 日,而且 Ledger 自己的公告就把粉塵攻擊列為需要這個功能的理由。
- Exodus。值得點名,因為標準建議在那裡行不通:Exodus 明說它不支援單獨發送或凍結個別輸出,並建議把私鑰匯出到另一個錢包——那個風險遠大於粉塵本身。它還會把低於 0.00001501 BTC 的金額自動掃進手續費。
Bitcoin Core 另外有一個相關選項 -avoidpartialspends,它把輸出依地址分組,要花就花很多、要不就一個都不花,而不是逐一挑選;說明文字把它解釋成一種隱私改善,因為地址多半會在較少的交易裡被一次掃空。它針對的是持有多個輸出的地址。對一個剛收到粉塵的空地址,還是維基那句話管用:放著別動。
在帳戶型鏈上,動作不一樣:
- 不請自來的代幣,就讓它留在原地。MetaMask 的建議是別去移動或賣掉空投來的詐騙代幣;它們常見的真正目的是一個向您要助記詞的網站。
- 永遠不要從自己的交易紀錄裡複製地址。地址投毒存在的全部意義就是這個。其他常見的騙局,見〈虛擬貨幣詐騙〉。
- 留意您授權了什麼。一筆 ERC-20 授權允許對方在額度內反覆提取,而且會覆蓋上一次的額度,標準自己就附了提醒:先把額度設為零。而在 EIP-2612 permit 下,您甚至不需要送出交易——一個簽好的訊息就夠了,任何人都可以替您送上鏈。撤銷授權之後,合約就碰不到錢包裡的東西了。
- 在 Solana 上,把垃圾代幣和垃圾 NFT 銷毀並取回租金。在波場和 BNB 智慧鏈上,不要理會備註欄。
接下來這兩件事,沒有辦法可以補。如果您已經把粉塵花掉了,沒有任何辦法可以倒回去——帳本是永久的,而那些告訴您別花的頁面,沒有一個說了花掉之後該怎麼辦。如果粉塵落在交易所的存款地址或任何託管錢包上,您這一側的選幣功能毫無意義:託管方會按自己的排程把存款歸集起來,這個決定從來不在您手上。
交易所的粉塵轉換是一種方便,不是隱私措施。幣安把低於 20 USDT 的餘額每小時轉換一次,收取固定 2%(alpha 代幣 10%,未上架與已下架的代幣不能轉換);Binance.US 用的是另一套規則——低於 20 美元、高於一美分、每六小時一次。
混幣器有用嗎?沒有用
這個問題值得直接回答,因為有些資安文章把混幣服務列進了粉塵攻擊的防禦手段。Identity Management Institute 在 2024 年 7 月這樣寫,PrimaFelicitas 也一樣。我們賣的就是混幣服務,而我們認為他們寫錯了。
對粉塵的防禦是不要花它。當您的錢包在組一筆存款交易、決定要用哪些輸出時,混幣服務沒有任何發言權。如果那筆交易裡含著粉塵,共同花用在服務看到任何東西之前就已經寫到鏈上了,地址也已經被歸成一群。事後付錢給誰都無法把它抹掉。在這一點上,寫過這個題目的最大錢包廠商用另一條路得到了同樣的結論:幣安學院給的建議是選幣和「不要花」標記,它完全沒有提到混幣器。BitGo、MetaMask 和 Phantom 也沒有。
上面還有一層歷史上的諷刺:在紀錄最完整的那場比特幣粉塵行動裡,發送者本身就是一家在打廣告的混幣服務。
混幣器做的是另一件工作。它切斷存款與出款之間的連結——也就是您送進去的幣與您收到的幣之間的關係——這對另一種觀察者有用,但對已經躺在您錢包裡的一個輸出毫無作用。在隱私這一側,與這種攻擊關係最近的是 CoinJoin:它在設計上就是要打破共同輸入歸屬啟發法,但只對您刻意送進去的那些幣有效(什麼是 CoinJoin,目前只有英文版)。至於地址一開始是怎麼被歸群、名字又是在哪裡被貼上去的,請看比特幣可以被追蹤嗎——同樣只有英文版。
混幣器的位置:notrace.exchange
這是 2026 年 9 月 20 日一筆訂單的樣子,寫在這裡是為了讓上一節不被讀成客套:
- 連結不落在公開鏈上。每一筆訂單都在私有結算層上結算,所以您的存款與出款之間的關係不會寫進公開區塊鏈。
- 出款一定分成兩筆。它會分兩次送到您指定的兩個不同地址,每一筆各有自己的延遲,最長六小時,從您的存款結算那一刻開始計算。
- 幣種。BTC、ETH、SOL、TRX,以及在多條網路上的 USDT 與 USDC。出款可以是您送來的那種幣,也可以是另一種。
- 可以驗證的承諾。付款之前,訂單頁會給您一封用我們的 PGP 金鑰簽署的信,寫明您要送多少、最少會收到多少、兩個地址是哪兩個、兩段延遲各是多久。
- 不需要帳號。沒有註冊,也沒有證件檢查。您靠連結回到自己的訂單,所以請保存好那個連結。
- 2026 年 9 月 20 日我們的費率是 0.5%,目前的費率永遠寫在常見問題裡。
以上沒有一項能把粉塵從您的錢包裡清掉。延遲還在倒數時,那一筆的資金由我們保管;規則第 8 節就是這樣寫的。
從哪裡開始
有四種幣各有自己的頁面,打開就是帶著即時最小金額的表單:比特幣混幣器、以太坊、Solana 和以太坊上的 USDT;其餘的幣種都在主表單上。如果您還沒有用過這類服務,逐步指南會帶您走完一筆訂單,從輸入金額到兩筆轉帳全部到帳——目前只有英文版;至於挑選混幣器之前值得做的那些檢查,則另有一篇獨立的指南。