區塊鏈交易的不可逆特性,一度被形容為是唯一的人類對上帝'時間'的低劣仿製品,然而也正是因為不可逆,導致大量黑客攻擊資金被盜無處解決,也被趣稱為web2向web3最成功的轉型:黑客。
而斯坦福大學研究員(kkwang@cs.stanford.edu等3人)於最近9.9號最新發布的論文,便是實現了兩種可逆交易的標準命名為ERC20R/ERC721R 。其引入了一個“去中心化法庭”機制,資產被盜時受害者可申請凍結資產,而”去中心化法庭“可通過投票來決定是否凍結,凍結資產後“法庭”將基於雙方的證據來決定資產歸屬,以解決糾紛。
然而不可逆到可逆,伴隨的是大量複雜的問題
誰能發起?惡意誣告阻塞資金怎麼辦
如何凍結?資金高速流轉,涉事廣泛,惡意投毒如何公證?
誰能仲裁?惡意法官,賄賂法官怎麼辦?
本文通過解讀ERC20/721R的實例代碼,以及對其算法實現探討可逆交易的探索挑戰。
1、可逆交易的發展簡史
在2020年區塊鏈上合計78億美元被盜,到2021 年則合計140億美元被盜,在過去一年裡也有超過1億美元的NFT受到釣魚等問題被盜。
由此可見一旦真正能解決這樣的問題,其標準的價值將有多大。
其實早在2015年就有讓交易可逆的討論提案了,這些年裡既有部分項目嘗試使用,也有Vitalik乃至ERC20的原作者之一也參與其中。
2015 年,Reversecoin是世界上第⼀個具有可逆交易的加密代幣,它在交易發起和確認之間引⼊了⼀個超時時間。每個帳⼾都有⼀個離線密鑰對,使所有者能夠撤銷交易或⽴即確認交易。但其實這並不能阻⽌許多現代黑客攻擊:攻擊者要么竊取確認密鑰,要么欺騙⽤⼾使⽤確認密鑰來再次確認惡意交易。
2018 年,ERC-20 標準的共同創建者之⼀(Dean Eigenmann)提出了可逆ICO的概念,投資者可以獲得與最近投資時間成反⽐的退款⾦額。儘管這可以防⽌單個token在發佈時的騙局,但它不能防⽌token後續惡意交易。
而2022年也出現有refunds-for-nfts (可退款的ERC721r標準)
而本論文中最重要思想是藉鑑了2018年 vitalik 提出的設想,基於Dao治理的可逆ERC20標準
2、ERC20/721R的實現原理
論文實現理念的核心是:基於”去中心化法庭“治理的Token
基於ERC20/721R標準實現的token,其交易在鏈上發布後都有資格在短時間內撤銷。但是爭議期過後,交易不能再撤銷。而在短暫的爭議期內,發送方可以通過說服一組離散抽取的法官來首先凍結有爭議的資產,然後再說服他們撤銷交易來請求撤銷交易。
看似一段話就描述完了,但其實中間存在非常多的風險性問題
決策前:誰能提案,誰能凍結?隨意的凍結將會斷絕信任也將阻塞資金
決策中:誰能參與,鏈上鍊下?法官可能被賄賂,法官的公正動機
決策後:幣種跨越,如何歸還?資金可能很離散,也可能殃及無辜
而20/721R的架構實現細節中,也帶有對其不少困境的答案。
2.1、ERC20/721R標準的參與角色
合計有4種角色參與其中,受害人、治理合約、法官群體、資產合約
victim是某受害者,即其Token的某個歷史持有者,可以向治理合約發起請求凍結。
Governance 是治理合約去中心化法庭的實現,可以兼任多個20/721R的治理。
Judges 是法官群體,每次隨機抽取法官投票,對資產合約發起凍結/解凍/歸還資金等操作
ERC20/721R必須使用此標準,才能記錄下歷史資金流轉記錄並實現了凍結對象的追溯算法
Governance則是吃瓜群眾,可以清理合約中無效的歷史數據,從而減少gas費消耗
通過核心流程角色可以看出
基本上,只要Victim受害人發起,滿足一定的治理合約的開庭條件(比如金額/手續費達標)就可以發起凍結,導致資金無法流動,所以,治理合約中的經濟模型獎懲機制是非常需要設計的,否則要么是法官疲於奔命,要么是惡意凍結中的阻塞資金
可拓展閱讀:資金阻塞對系統運作的影響
【合約解讀】CryptoPunk 世界上最早的去中心化NFT交易市場
其次可逆交易在實現中還有2個核心的問題需要特別關注
如何確保仲裁後可靠的歸還
如何防止惡意的法官和決策
2.2、ERC20/721R標準的判決流程
從論文的流程圖中可以看出,主要5大環節
失竊:黑客盜竊後可能快速洗錢轉移到多地址,兌換流轉,乃至銷毀
申訴:發起凍結是需要支付挑戰保證金的,也將成為治理合約的收益來源
抽法官:其組成從法官庫中隨機挑選,這可沿用POS類似的質押參與出塊思路
凍結:一旦法官決議凍結,則由智能合約來計算應該被凍結的地址與金額
決斷:最終等待雙方提交證據以待法官決策,完成後法官分割評判收益
3、風控與博弈機制
3.1、如何應對惡意法官?
從上述運作流程中可以看出
法官決策有著極高的權利,因此如何選擇法官,如何對法官進行補償,如何阻⽌行為不端惡意的法官,例如收受賄賂或對有爭議的交易做出錯誤決定的法官,就是治理的難題
首先,法官的行為只能通過治理合約進行,其行為是受限的,雖然此合約並未真正實現但也提及了些設計思路,基本是參照POS質押出塊的流程
秘密投票原則:在投票數量⾜夠多之前不公開法官成員,用以規避主動找法官賄賂。
動態法官原則:隨著有爭議交易的⼤⼩⽽增加法官需要的數量,提高賄賂法官範圍和成本。
法官SBT原則:採用鏈下現實世界中真實身份參與法官池,讓錯誤判決影響其真實身份
決策分離原則:採用法官的決策無論是同意還是不同意,都可以收益瓜分提案手續費。
工作監察原則:法官如果多次無法及時投票,則罰沒質押金以及清退
在十四君看來,這種理想中的法官管理方式,可能需要較高的收益做激勵以及錯判的2次復審,防止陷入有提案難決斷的中間狀態。
3.2、如何做到可靠凍結?
通過上文的描述,可以看出法官依賴於現實與去中心化投票的決斷,但他們行為的基石是該資金已經被凍結,從而有時間讓他們進行分析決斷。
因此20/721R如何做到有效找到該凍結的對象和金額,就是本文最難,也是該論文最多筆墨創新的部分了。
3.2.1、針對ERC721R
這種邏輯相對簡單,因為資金的流轉是不可分的,只有地址可能多樣。
當然即使是721也不簡單,因為我作為歷史持有者可能不是馬上發現資金損失的,而即使是1分鐘,也有可能導致該NFT被轉移到其他無辜的用戶手中。
所以ERC721R他定義了一套專門用於記錄交易歷史記錄的合約數據存儲,
針對凍結:定義了frozen[tokenId] 對象來鎖定Id繼續轉移
針對受害地址:依據歷史交易記錄(合約內存儲)來確定資金損失方
綜合來看,721R與傳統的721對比,則是記錄如下的數據,總是能得知NFT流轉方
tokenID0 → (owner0, bn0),(owner1, bn1), . . . tokenID1 → (owner0, bn0),(owner1, bn1), . . . tokenID2 → (owner0, bn0),(owner1, bn1), . . .
當然你可能會說,這不是看NFT合約的歷史記錄就可得知了嗎?
拓展閱讀鏈上數據分析:
抓完X2Y2十萬NFT訂單,分析版稅可以不收後多少用戶真這麼做了?
不過論文中這種記錄交易歷史的做法,不只是為了找出爭議交易的區間,也能作為一種對惡意法官的限制,是的,面對極高的法官權利,一旦NFT過了爭議期,或者已經有往期評估審計後,那就無法發起撤銷交易指令。
3.2.2、針對ERC20R
ERC-20 合約的凍結功能要復雜得多。問題在於,在盜竊和凍結請求之間,代幣可能已轉移到多個賬⼾,且各個賬號可能獲得資金都不同。如下圖
圖中V是victim是某受害者,a0是黑客,a1-a11則是在凍結請求之前的全部涉案地址。圖中表示了多種資金可能被操作的場景鏈路。
場景1:資金可能銷毀,例如a8通過跨鏈橋轉移到不同生態或者幣交所出金,這時自然無法找回
場景2:資金可能重疊,a1可能是a0的長期存儲地址,因此多筆被盜資產都在這裡,在無法判別之前,只能凍結涉案金額,而非全部金額
場景3:資金可能循環,如a4又向a0轉賬,則需判斷該資金是否是乾淨的
最終整個a1-11多少金額應該被納入凍結計算,論文提出了一套算法來計算。
核心理念是依據上下資金傳輸來定義每個節點的鎖定義務,比如V損失100,而a0中剛好有50,則先凍結這50,然後剩餘的50作為a1,2,3的義務,往下操作凍結。承擔的義務量由a0向a123轉賬的記錄中計算得出。因此即使被投毒比如轉1塊給幣交所,也不會凍結幣交所超出爭議資金承擔義務的部分。
具體實現算法論文和其代碼資源,通過十四君公眾號後台回复'ERC20/721R' 可獲取
4、總結
到這兒,對其實現已經基本講述完畢,那這樣的方式真的好嗎?
從作者本身看
筆者認為這也是目前web3行業的一個大趨勢,越來越多web2高端人才在湧入這樣的時代熱潮中,並且爭相解決一些行業前沿協議層的問題,雖然是好事,但,整體人力投入不平衡,胖協議、瘦應用的現狀依舊有些頭重腳輕、避重就輕。尖端學者走前沿協議研究很好,那項目方是不是更應該拿了ICO後該好好做事呢?
可拓展閱讀:協議與應用雙贏的案例
一文講清-NFT市場新秀SudoSwap的AMM機制-創新挑戰與局限
從論文目標看
筆者認為,最大的難題並不是單純的凍結算法精準度,而是有延遲的Token與無延遲的Token如何兼容兌換的問題,即可逆交易其實是有毒的,一旦爭議資金發生跨協議轉移,又被逆交易。那對於交易所而言,應該是等待資金度過爭議期才執行真正的轉移交換,這樣對基建的顛覆很有可能阻礙其上的應用發展。
從防黑效果看
首先本身協議能否被社會接受是挑戰,其次法官也將伴隨質押經濟的平衡設計,最終依舊存在賄賂部分礦工從而乾擾甚至阻礙重排序交易的風險,而且,最關鍵的是鏈上真正可信的數據是很難在鏈下實證出,這筆交易是被盜,而不是交易反悔。所以筆者對防黑效果上並不完全看好。
從合約實現看
確實,來自斯坦福大學研究員的手筆其合約算法設計高度精巧,且確實在智能合約中實現算法也是難得一見的奇觀,賦予算法信任的同時,帶來的問題則是高昂的代幣成本。
每次轉移本身只是2處標準的NFTbalance的修改,然而如今要記錄每次歷史記錄、凍結狀態,凍結執行時還涉及大量對子地址的餘額修改,都將導致其貴到無以復加。
對Gas計算原理可拓展閱讀:
附錄 【ERC-20R 和ERC-721R:以太坊上的可逆交易】 https://arxiv.org/abs/2208.00543 【2022 年加密貨幣犯罪報告】 https://go.chainalysis.com/rs/503-FAP-074/images/Crypto-Crime-Report-2022.pdf 【Refunds For NFTs – The New ERC721R Standard】 https://geshet.io/refunds-for-nfts-the-new-erc721r-standard 【vitalik.eth twitter】 https://twitter.com/vitalikbuterin/status/987262267036184577 【Reversecoin:世界上第⼀個可逆交易的加密代幣】 https://docs.google.com/document/d/1hMCkEQUYm9oFCQpxtIWFqVpt66pTQn1zCDW8WX0b7hw/edit
歡迎你從後台提交web3行業問題探討
點贊關註十四,用技術視角帶給你價值