8 小時前

分析:Solana替代nonce可在交易失敗後保留簽署核准

Solana's offline-signing proposal would keep approvals valid after failed transactions

CryptoSlate

Solana基金會10月提出的計畫,建議以鏈上簽署程式取代持久nonce,由程式驗證離線簽章並執行核准的指令。程式衍生地址(PDA)將控制受影響的帳戶,原始金鑰則負責核准操作;另一名線上營運者提交交易並支付網路費用。交易所、託管機構和財務管理營運者須遷移資產或權限、確保應用程式接受新的執行流程,並取得風險團隊核准。

持久nonce仍可使用;基金會尚未訂定移除日期,也未決定採用Anza的Programmatic Signer或Blueshift的Vector。約6個月的遷移期間,取決於合適的替代方案是否已準備就緒、完成稽核並在主網上線。持久nonce讓使用者可先離線核准、之後再廣播交易,做法是使用已儲存的nonce,而非很快就會過期的近期區塊雜湊。Solana另一項獨立的200毫秒區塊時槽升級於10月9日進入主網最後階段,縮短了一般核准所需時間;不過,過期時間取決於區塊的產生,而非由固定計時器保證。

使用Programmatic Signer時,冷錢包金鑰會簽署授權訊息,再由中繼者透過使用新區塊雜湊的交易提交,以便驗證並透過衍生地址執行。PDA沒有私鑰,其權限來自對原始金鑰核准的驗證;資產或權限則須另行轉移。遷移指南列出須移至衍生地址的項目,包括原生SOL、代幣餘額、鑄造或凍結權限,以及質押帳戶的質押者權限、提款權限或兩者。基金會建議在舊式持久nonce仍可使用時,完成這些分開的移轉;各財務管理單位的帳戶清單及現有金鑰權限,將決定須進行哪些變更。Programmatic Signer衍生出的SOL帳戶由System程式擁有,可透過核准的一般轉帳發送SOL。相較之下,Vector會初始化一個由程式擁有的帳戶,並透過經授權的提款或關閉操作釋出SOL。

Programmatic Signer的訊息文件指出,冷錢包簽章會綁定執行者、nonce帳戶及內嵌的執行訊息,避免中繼者修改這些已授權的內容。中繼者可以選擇外層交易的費用支付者和區塊雜湊,也可以在提交交易前後加入指令。Vector則會綁定頂層指令緩衝區,包括核准呼叫其他程式時所使用的資料和帳戶,避免後續插入、移除或重新排列周邊指令。Programmatic Signer允許在已核准操作周圍組合執行環境;Vector則要求事先核准周邊指令序列。兩者都不允許費用支付者改寫已簽署的操作。

目前的持久nonce交易若通過驗證但執行失敗,仍會消耗nonce。Programmatic Signer會將nonce遞增與應用程式變更一併提交,或一併回復。Vector文件記載相同的重試能力:提交失敗後,只要nonce未變且沒有期限限制,核准仍可在稍後執行。Vector警告,中繼者可能扣留交易,直到情況改變;或是某次失敗嘗試暴露的簽章可能在之後執行。簽署指令中可加入逾時設定,在期限過後拒絕執行。撤銷核准須另行授權nonce遞增,並成功記錄。若交易失敗時nonce變更一併回復,因逾期遭拒的交易不會消耗nonce。

基金會提出這項方案的理由,是簡化驗證者的處理流程:持久nonce需要特殊的防重播規則,會使非同步執行更複雜,也讓無效交易更難過濾。將核准和防重播狀態移至一般程式後,驗證者只須處理一般區塊雜湊交易;應用程式則透過跨程式呼叫(CPI)接收核准的操作。要求操作必須位於頂層的應用程式可能拒絕這種流程;僅檢查頂層還款或簽章驗證指令的機制,也可能漏掉簽署程式內嵌的操作。增加呼叫深度無法解決那些會拒絕呼叫位置,或無法檢查內嵌指令的規則。基金會建議支援已知的簽署程式,或提供另一種執行途徑。應用程式是否接受PDA簽章,與離線核准在密碼學上是否有效,是兩回事。

啟用Token-2022的CPI Guard後,CPI轉帳和銷毀代幣須具備受託人權限、禁止CPI核准,且即使不透過CPI也禁止變更所有者。永久受託人有轉帳和銷毀例外;可能採用的受託人轉帳途徑,則須另行決定權限與託管政策。在3月4日的討論中,一名自稱來自Fireblocks的Michael支持淘汰nonce,但反對CPI Passthrough帶來的遷移、合約依賴及DeFi相容性負擔。Michael傾向採用交易封套,並將Sudo視為替代方案,而非所提議的CPI簽署流程。同日,自稱任職於Unit 410的Grant表示,小型且可稽核的簽署程式或可使權限遷移獲得接受。Grant反對暫時將資產移至熱錢包簽署者,即使採用原子交易也不例外,因為依Unit 410的非託管模式,資金必須持續與冷儲存相關聯。

Programmatic Signer文件指出,該程式已部署至devnet,稽核仍在進行;v1發布及任何主網部署前,必須先完成問題修正,文件也提醒介面可能變更。Programmatic Signer的使用文件將模擬和中繼提交功能標示為即將推出,遷移指南也指出仍有數項操作尚未完成。Vector公開了實作程式碼和程式ID,但其README未說明稽核或主網部署狀態。Fireblocks目前的協定導入工具包指出,部分WalletConnect整合(包括Jupiter和Kamino)會自動加入持久nonce,並由預設服務供應商管理15分鐘的有效期限;替代方案必須能配合這項要求。

This content is an AI-generated summary/analysis for informational purposes only and does not constitute investment advice.