整個上午我都在幫一個朋友把錢包找回來——不是被黑了,也沒什麼戲劇性。他只是因爲在某個新的 dApp 裏簽名請求確認得太快了,等到交易已經過完之後才意識到自己到底授權了什麼。好消息是:密鑰全程都沒有出問題。正是這件事讓我這麼想。

所以我沒有回去盯着圖表,而是一直在想這件事,最後又回到了 Newton Protocol 的任務上,這次從代理授權的角度去看,而不是隻盯着代幣價格。

關鍵是——有點讓人不安的是:我們已經花了很多年告訴大家“保護你的私鑰”,彷彿那就是終點。冷錢包、把助記詞寫在紙上、永遠不要泄露……所有這些都沒錯,而且仍然正確。但我朋友的密鑰從來沒有被攻破。他是通過一次簽名在“自己犯了錯”,而密鑰一直都在那兒,完美安全。漏洞的方向已經轉移了。現在不再是“誰拿到了你的密鑰”,而是“在持有密鑰的情況下,你到底授權了什麼”。

實際發生情況的簡化版:人們會把“簽署一筆交易”想成一個小而局部的動作——批准這件事,然後就結束。可實際情況(尤其是針對循環代理或自動化審批)往往是:你給出的是一段持續有效的授權範圍,而不是一次性的事件。Newton 整個推介——zkPermissions、Keystore rollup——本質上是在承認:真正的攻擊面現在已經變了。不再是密鑰本身。也不是“密鑰是否存在”,而是簽名一旦發生後,這把密鑰被允許做的事情的範圍。

但煩我的恰恰是這部分,而且我一直在反覆權衡:如果真正的風險從“密鑰託管”轉移到了“權限範圍界定”,那負擔就只是又轉回到了用戶身上,只不過換了一種更讓人困惑的形式。以前的建議很簡單:永遠不要分享你的助記詞。現在的建議變成了:在批准之前,弄清楚這份“特定簽名”到底授權了什麼——持續多久、在什麼條件下。……這對普通人來說要難得多。我原以爲“範圍化權限”會讓用戶更簡單。可實際上我不確定——它只是把複雜度挪到了大多數人仍會快速掃過、甚至跳過的那個步驟上。

而且等事情變得忙碌起來,我並不完全相信這一點會成立。處在平靜時刻,我當然會去讀權限範圍。但在市場出現波動的時候,當大家都急着快速進場或出場、搶時間時——有人真的會停下來檢查:這個代理到底被授權做什麼?還是隻是因爲價格在動,就直接點“批准”?這恰恰是老式密鑰被盜以前經常發生的時刻——慌亂、奔忙、跳過步驟。我不認爲把“保護你的密鑰”換成“理解你的權限範圍”就能消除這種失敗模式,只是把失敗的表現形式換了而已。

我覺得這事真正會影響到的人,並不是那些已經深入這個領域的人——因爲他們足夠謹慎,願意放慢腳步。更受影響的是那些新用戶:他們之所以被引導上手,是因爲代理和自動化被宣稱會讓事情更簡單。越是“變得容易”,出錯之前的摩擦就越少,也就越不可能有人停下來去閱讀自己剛剛簽了什麼。

一個小片段,但比我預想的更讓我印象深刻。朋友的資金最終是安全的,主要是運氣,說實話。但這讓我重新理解了一件我以前並沒有真正質疑過的事——“安全的”和“密鑰是安全的”已經不再是同一句話了。我覺得,圍繞解釋權限的這些工具,目前還沒有跟上這一點。

反正。我要再花一點時間想清楚之後,我究竟對這件事的感受是什麼。市場在後臺還在自顧自地運行着。

@NewtonProtocol #Newt $NEWT