錢包授權(Approve)點解會令啲幣被轉走?授權機制、撤銷做法同分倉管理
本文拆解錢包授權(Approve)與轉賬的分別、無限額度的代價、釣魚簽名令資產被轉走的實際路徑、不同簽名種類的風險差異,以及撤銷授權、定期檢查與大額持倉分倉管理的實務做法。
不少人第一次覺得錢包不安全,都是在資產被轉走之後:私鑰沒有交給任何人,助記詞也沒有輸入過,但代幣還是不見了。原因往往不是私鑰外洩,而是曾經批准過一份授權,把提取額度交了給某個合約。理解授權與轉賬的分別、額度如何長期保留,以及撤銷與分倉的做法,就可以把風險控制在可管理範圍之內。
授權唔係轉賬:你批准嘅係「代你提取」嘅額度
在錢包內按下確認的動作並不只有一種,最容易被混淆的就是轉賬與授權。轉賬是把指定數量的資產由你的地址送到另一個地址,動作完成之後就結束;授權則是在代幣合約內記錄一筆額度,容許某個指定的合約日後在你不再逐次確認的情況下,從你的地址提取相應數量的代幣。換言之,授權本身不會即時減少你的餘額,所以簽署當下畫面看起來毫無異樣,這正是它容易被輕視的原因。真正的風險在於那筆額度會一直存在,直到你主動修改或撤銷為止,而不是用完一次就自動失效。
點解要有呢個機制:代幣標準同合約互動嘅設計
這個設計並非漏洞,而是主流代幣標準本來的運作方式。代幣是記錄在合約內的一組帳目,合約與合約之間不能像人一樣主動把資產推送過去,所以當你要用某個應用去兌換、存入或掛單時,該應用的合約必須先獲得權限,才能在執行時把代幣由你的地址取走。若沒有這個機制,每一步操作都要你逐次確認,體驗會非常繁瑣。問題出在實作習慣:許多介面為了減少往後的確認次數,預設要求一個遠大於當次所需的額度,而使用者通常只會看到一個確認按鈕,不會留意背後的數字。
無限授權嘅方便同代價:額度會一直留喺度
所謂無限授權,是指批出一個極大的額度,令該合約在額度用盡之前都不需要你再確認。方便之處很直接:日後重複操作可以省去確認步驟,亦省回一次手續費。代價則在於時間,因為那筆額度不會因為你停用該應用而消失,也不會因為你把資產轉走再轉回而重置。如果該合約日後被發現存在漏洞、被管理權限接管,或者根本由一開始就是惡意設計,額度就會成為現成的提取通道,而你的私鑰由頭到尾都沒有外洩。這解釋了一個常見的困惑:明明沒有洩露任何機密,資產仍然可以在你不知情的情況下被轉走。
安全重點:資產被轉走嘅實際路徑通常係一次簽名
在多數個案中,出事的起點都不是複雜的技術攻擊,而是一次看似平常的簽名。常見劇本包括:收到一筆來歷不明的空投代幣,代幣名稱內嵌一個網址,引導你到假網站領取;在社交平台或搜尋結果點入外觀與正版幾乎一致的釣魚頁面;又或者遇上假客服,聲稱要協助解鎖或驗證錢包,要求你連接錢包並確認一次操作。這些頁面真正索取的往往不是轉賬,而是一份授權或一份離線簽名,確認之後畫面可能顯示失敗或沒有反應,令你以為甚麼都沒有發生。判斷原則相當實用:任何以急切語氣要求你立即連接錢包並簽名的訊息,無論來自哪個渠道,都應該先停下來,改由自己輸入的官方網址進入,並在簽名前逐項核對操作內容與涉及的代幣和額度。
唔同簽名唔同風險:授權、離線簽名同盲簽
值得分清楚的簽名大致有三類,風險並不相同。第一類是一般授權,會產生一筆鏈上交易並需要支付手續費,你在錢包內通常可以看到被授權的對象與額度。第二類是離線簽名,不會即時上鏈、不需要手續費,看起來人畜無害,但它同樣可以授出提取權限,並由對方在日後自行提交,因為沒有手續費提示,警覺性往往更低。第三類是盲簽,即錢包無法解析該筆操作的內容,只顯示一串資料,這代表你在不知道實際效果的情況下作出批准。實務上的取態是:看不明白就不要簽,寧願放棄一次操作,也不要把判斷交給對方提供的介面說明。
撤銷授權點做:檢查、收回額度同事後處理
撤銷授權的原理,是把已記錄的額度改為零,這同樣是一筆鏈上交易,需要用該條鏈的原生幣支付手續費。做法上可以使用錢包內建的授權管理功能,或使用區塊鏈瀏覽器提供的授權檢視工具,逐一檢視某個地址曾經批出的額度,再把不再需要的收回。要留意一點時序問題:撤銷只能阻止日後的提取,對於已經被轉走的資產沒有回溯效力,所以發現異常時,優先次序是先把仍在該地址的資產轉移到一個全新且從未簽署過任何授權的地址,然後才慢慢處理撤銷。另外要提防二次詐騙,因為市面上有不少假冒的撤銷工具或代辦服務,會在你尋求協助時再索取一次授權,正規做法都是在你自己的錢包內完成,不需要交出助記詞,亦不需要把資產轉給任何第三方代為處理。
大額持倉實務:分倉管理同交收前後嘅核對習慣
把所有資產放在同一個經常連接應用的地址,是很多問題的根源,較穩健的做法是按用途分倉。可以保留一個日常互動用的地址,只存放短期需要的金額,接受它較高的暴露程度;另設一個以離線方式保管、從不連接任何應用的地址,用來存放長期持倉;如涉及公司或合夥資金,再考慮共管安排。定期檢視授權紀錄,把用完的額度收回,並在每次大額進出前後核對餘額與交易紀錄,都是成本很低但效果明顯的習慣。若涉及港元與加密貨幣之間的兌換,交收對手是否可核實、資金流向是否留下完整紀錄,同樣值得與錢包安全一併考慮。CoinXTM 自 2013 年起在香港經營場外交易,支援逾 100 種加密貨幣,設有 KYC/AML 流程與鏈包風險檢測,以銀行轉賬交收並保留交易紀錄,辦公室位於香港上環永樂街 177-183 號永德商業中心 3 樓 305 室,最低交易額參考為 HK$50,000。如對收款地址核對、交收安排或到帳時間有疑問,可透過 WhatsApp(+852 6111 4060)聯絡交易員,或到 /quote 實時報價頁掌握市場水平。本文只作教育用途,不構成投資意見。
常見問題
我從來冇玩過 DeFi,係咪就唔會俾人用授權轉走啲幣?
接觸得少確實會減低機會,但不等於完全沒有風險,因為授權的入口並不限於刻意使用去中心化應用。常見情況包括:錢包內突然出現來歷不明的代幣,當中夾附網址誘導你去領取或出售;在搜尋結果或社交平台點入外觀與正版相似的頁面;又或者在群組內被假客服引導連接錢包處理所謂的驗證。只要你曾經連接錢包並確認過一次操作,就有可能已經批出額度,而畫面未必會有任何明顯提示。比較穩妥的做法有幾點:不主動處理來歷不明的空投代幣,收到就當作沒有看見;只由自己輸入或收藏的官方網址進入應用;長期持倉與日常互動使用不同地址;每隔一段時間用授權檢視工具查看自己的地址批出過甚麼額度。若從未使用過任何應用,檢查結果通常是空白,這本身也是一次有價值的確認。
撤銷授權要俾手續費,咁係咪等出事先撤好過?
以風險管理的角度看,等出事才處理並不划算,因為撤銷沒有回溯效力,只能阻止日後的提取,對已經被轉走的資產無法追回。撤銷是一筆鏈上交易,需要用該條鏈的原生幣支付手續費,金額視乎當刻網絡狀況,通常相對持倉規模而言比例很低,可以視為一次性的整理成本。合理的節奏是不必每完成一次操作就撤銷,但應該定期檢視,把明顯不再使用的應用、額度異常巨大的授權,以及任何自己認不出來的對象優先收回。若不趕時間,可以選在網絡較淡靜的時段一次過處理多個授權,成本會更可控。要提醒的是,發現異常時的第一步並不是撤銷,而是先把資產轉到一個全新、從未簽署過授權的地址,因為在資產仍留在原地址時逐個撤銷,過程中仍有被搶先提取的可能。
大額持倉點樣安排,先可以減低呢類風險?
核心思路是把暴露程度與資產規模分開,不要讓長期持倉暴露在日常操作的風險之下。實務上可以分為三層:一個日常互動地址,只放短期會用到的金額,接受它較常連接應用;一個離線保管的長期地址,從不連接任何應用、不簽署任何授權,只做收款與轉出;若涉及公司或多人共同持有的資金,再考慮需要多方確認的共管安排,避免單一人員可以獨自轉出。配套的習慣同樣重要,包括定期檢視授權紀錄、大額轉出前先做小額測試轉賬、完整核對整個地址而不是只看頭尾幾個字元,以及保留每次進出的紀錄以便日後對數。當交易涉及港元與加密貨幣之間的兌換時,除了錢包安排,亦應留意對手方是否可核實、交收是否經由具名銀行帳戶進行,以及資金來源說明是否齊備,這些因素對日後與銀行溝通的影響往往比想像中大。