A. 閃電貸攻擊解讀
如何防範閃貸攻擊?img=' https://P3 . toutiaoimg.com/large/PGC-image/rrzyiw 2 HF 9 Q1 TN '/(奧維的教堂,梵高)
一句話總結,這些攻擊都很「華麗」。在每一次攻擊中模攜,攻擊者都是在不花一分錢的情況下,立即借入數十萬美元的ETH,然後通過一系列脆弱的鏈式協議賺取數十萬被盜資金,最後以巨額歸還所借的ETH貸款。這一切都發生在一瞬間。即在單個以太坊交易中完成。
封面來自卡邁恩因凡蒂諾。
我們不知道這些攻擊者是誰,也不知道他們來自哪裡。他們空手而來,不留痕跡地帶走了價值幾十萬美元的東西。
在這些攻擊之後,我一直在思考閃貸及其對DeFi security的影響。我覺得值得開誠布公的思考。簡而言之,我認為閃貸對DeFi來說是一個巨大的安全威脅。然而,閃貸不會消失,我們需要仔細考慮它們對未來DeFi安全的影響。
什麼是閃貸?
閃貸的概念最早是由Marble Agreement的創始人Max Wolff在2018年提出的。Marble自稱是市場上的「智能合約銀行」。其產品非常簡單,但在DeFi方面極具創新性:通過智能合同實現零風險貸款。(藍狐註:關於什麼是閃貸,請參考之前的文章《加密閃貸:互聯網貨幣的神奇新發明》 《閃貸策略:攻擊者能取走Maker的7億美元抵押品嗎?》 《bZx事件的啟示》)
怎麼會有零風險貸款?
傳統貸款機構承擔兩種形式的風險。第一,違約風險:如果借款人跑路,那就太可怕了。貸款人的第二個風險是流動性不足的風險:如果貸款人在錯誤的時間貸出了過多的資產或未能及時收回還款,貸款人可能會意外缺乏流動性,無法履行義務。
快速貸款減輕了這兩種風險。閃貸基本上是這樣運作的:我在一次交易中借給你你想要的錢數。不過,在這次交易結束之前,你至少要把我借給你的錢還了。如果你不能做到這一點,我會自動回滾您的交易。是的,智能合約可以做到這一點。
簡而言之,你的閃貸是原子性的:如果你不能償還貸款,整個事情就會恢復,就像貸款從未發生過一樣。這種事情只能發生在區塊鏈。比如,你不能在BitMEX上閃付你的貸款。這是因為智能合約平台一次只能處理單筆交易,所以單筆交易中發生的所有事情都是作為批處理按順序執行的。你可以把它想像成事務執行過程中的「凍結時間」。另一方面,集中交易所可能存在競爭,使你的訂單無法履行。在區塊鏈上,可以確保你所有的代碼都按順序運行。
所以讓我們考慮一下經濟學。傳統貸款人的補償方式有兩種:他們所承擔的檔陵風險(違約風險和流動性風險),以及借出其資本的機會成本(比如,如果我在別處可以獲得2%的利息,那麼借款人必須向我支付超過2%的無風險費用)。
閃貸不一樣。從字面上講,閃貸沒有風險,沒有機會成本。這是因為借款人在其閃貸期間「凍結了時間」。所以,在別人看來,體制內的資本從來都是沒有風險和負擔的,在別處賺不到利息(也就是沒有機會行碼戚成本)。
從某種意義上說,這意味著做閃貸的出借人是沒有成本的。這是非常違反直覺的。那麼,在均衡狀態下,閃貸的成本應該是多少?(藍狐註:當我們在這里談論均衡時,我們指的是當我們充分競爭、成熟和穩定時)
基本上閃貸應該是免費的。或者,更恰當地說,支付一小筆費用來分擔包含額外三行代碼的成本,這三行代碼使資產可用於flash lending。
雷姆科布洛曼
閃貸不能收取傳統意義上的利息,因為這類貸款的有效期為零(任意APR*0=0)。當然,如果閃貸人收取更高的費用,他們很容易被其他收取更低利率的閃貸池超越。
快速貸款使資本成為真正的商品。這種競爭必然導致零收費或者微不足道的象徵性收費。DYdX目前對閃貸零手續費。另一方面,AAVE對閃貸收取本金的0.09%。我懷疑這是不可持續的。事實上,他們社區中的一些人已經呼籲將成本降低到零。(請注意,這兩次攻擊都沒有將AAVE作為他們的快速貸款池)
貸款有什麼用?
閃貸最初的宣傳是基本用於套利。大理石的公告聲稱:
「通過閃貸,交易者可以從大理石銀行借錢,然後在一個DEX上買入代幣,在另一個DEX上以更高的價格賣出代幣,然後將錢返還給銀行,在單個原子交易中獲得套利收益。」
事實上,從交易量來看,到目前為止,大多數閃貸都用於此類套利。
快速貸款在AAVE的使用。出發地:AAVE
但是,交易量小。自AAVE閃貸業務推出以來,其貸款金額僅為1萬美元。與DeFi的套利和清算市場相比,這是微不足道的。
這是因為大多數套利者是由運行復雜機器人的競爭性套利者執行的。他們參與連鎖優先天然氣拍賣,並使用天然氣代幣來優化交易成本。這是一個競爭非常激烈的市場,這些人非常樂意在資產負債表上保留一些代幣,以優化他們的回報。
另一方面,從AAVE借錢要花80kgas,並收取本金的0.09%,這對爭奪微小差價的套利者來說是個高價。事實上,在大多數AAVE套利交易中,借款人最終支付給借款池的錢比他們從套利中獲得的錢要多。
長期來看,除非有特殊情況,套利者不太可能利用閃貸進行套利。但在DeFi中,閃貸還有其他更引人注目的使用案例。一個例子是貸款再融資。例如,假設我有一個創客金庫(藍狐註:即抵押債務
務頭寸),其中鎖定了100美元的ETH,我從中借出了40 DAI的貸款,也就是說,除去債務,我還有60美元的凈頭寸。現在,假設我想在Compound再融資以獲得更好的利息。通常,我需要回購40 Dai來關閉我的CDP,這需要一些前期資金。而現在的可替代方法是,我可以通過閃貸借出40 Dai,關閉100美元的CDP,然後將解鎖的價值60美元的ETH存入Compound,通過Uniswap將剩餘的價值40美元的ETH換成Dai,然後用它償還閃貸。Boom!原子性的0資本再融資。
這真是太神奇了。這是貨幣樂高運作的很好例子。1x.ag實際上構建了一個保證金交易匯聚器,該匯聚器使用閃貸自動執行這一切。但是閃貸可以很酷,bZx攻擊者向我們展示了它們不僅是好玩和游戲。
閃貸攻擊對安全性有重大影響
我越來越相信,閃貸真正解鎖的是閃貸攻擊,一種由閃貸提供資金的資本密集型攻擊。在最近的bZx攻擊事件中,我們第一次看到這一現象,而我懷疑這只是冰山一角。
閃貸對攻擊者尤其有吸引力的主要原因有兩個:
很多攻擊需要大量前期資金(例如預言機操縱攻擊)。如果你在賺取價值1000萬美元ETH的正向投資回報,則可能不是套利——你可能會說這是在扯淡。
你可能不太喜歡交易所黑名單是如今區塊鏈安全模型的一部分。這是非常黏糊且中心化的。但這是一個重要的現實,它為這些攻擊提供演算信息。
在比特幣的白皮書中,中本聰宣稱比特幣有免遭攻擊的安全,因為:「攻擊者應該會發現,遵守規則...比破壞系統和其財富的有效性更有利可圖。」
有了閃貸,攻擊者不再需要有利益參與其中。(藍狐筆記:也就是說,破壞系統不會影響攻擊者的自身利益,因為攻擊者沒有利益相關)。閃貸實質上改變了攻擊者的風險。請記住,閃貸可以累積!受制於gas limit,實際上,你可以在單個交易中(最高可達5000萬美元 )匯聚各個閃貸池,並將所有資金集中湧入一個脆弱的合約中。這是一個5000萬美元的攻城錘,現在任何人都可以猛擊任何鏈上的彩陶罐。這實在恐怖。
當然,僅憑你很有錢還無法攻擊協議。如果DeFi堆棧如它宣稱的那樣安全,所有這些都不是問題——什麼類型的協議對巨鯨來說是不安全的?你可能會說,沒有考慮這一點就是過失。
但是,我們承認以太坊自身也可能會遭受51%的攻擊,當前的攻擊成本是每小時不到20萬美元。這不算非常多的資金。如果以太坊自身的安全模型都基本上是構建在資本限制上,那麼,為什麼我們要如此快地去嘲笑可以被1000萬美元成功攻擊的DeFi使用?(明確地說,我不認為這些數字——這一數字方便地忽略了滑點和供應不足——加上共識層安全和使用層安全是兩碼事。但你明白這個意思。)
那麼,如何減輕閃貸攻擊?
假設我是DeFi協議,我想避免被閃貸攻擊。自然的可能問題是,我能否檢測到與我交互的用戶是否在使用閃貸?
簡單答案是:不。
EVM並不允許你從任何其他合約中讀取存儲。因此,如果你想知道其他合約正在發生什麼,則可以通過該合約告訴你。因此,如果你想知道是否閃貸合約在被使用,你必須直接詢問合約。如今,很多借貸協議並沒有對這種查詢做出響應(而且一般來說,也沒有辦法強迫閃貸借貸者的行為)。另外,即便你試圖檢查,通過使用代理合約或通過串聯閃貸池也容易誤導此類查詢。簡單來說,通常很難辨別一個存儲用戶是否在使用閃貸。
簡言之,如果有人拿著1000萬美元敲你合約的前門,你無法判斷這是否是他們自己的錢。那麼,我們有什麼真正的選擇可以防止閃貸攻擊?我們可以考慮如下幾種方法。
說服閃貸借貸池停止提供服務。
哈,開玩笑。這是加密世界,你們懂的!
認真地說,試圖讓借貸池停止提供閃貸就像是試圖停止噪音污染——這是典型的公地悲劇。提供閃貸符合每個協議的自身利益,且出於合理原因,它們的用戶也希望使用這一功能。因此,我們盡可忽視這一條。閃貸並不會消失。
強制關鍵交易跨兩個區塊進行
請注意,閃貸允許你在單個交易時間段內借入資金。如果你需要一個資本密集型交易跨越兩個區塊,那麼,用戶必須取出至少兩個區塊的貸款,由此擊敗任何閃貸攻擊。(注意:為此,用戶必須將其資產鎖定在兩個區塊之間,以防止他們償還貸款。如果你沒有正確地考慮設計,則用戶可能只是在這兩個區塊中實施閃貸攻擊)
顯然,這會帶來巨大的UX權衡:它意味著交易不再是同步的。它對普通用戶來說極其糟糕,這是很難下決心採取的措施。(藍狐筆記:為了防止閃貸攻擊,導致用戶體驗糟糕,顯然是下策)
很多開發者對非同步智能合約操作感到煩惱,例如,與layer 2的交互,以及以太坊2.0的跨分片通信。具有諷刺意味的是,非同步其實讓這些系統在應對閃貸時更安全,因為你無法在單個原子交易中橫跨分片或layer 2。這意味著不會有跨ETH2.0分片或在layer 2針對DEX的閃貸攻擊。
要求提供鏈上證明,以證明用戶的先前余額並沒有因為閃貸而改變
如果能有方法檢測出用戶真實的余額多少(也就是他們獲得借款之前的余額),我們就可以擊敗閃貸攻擊。
無法在EVM中本地執行此操作,不過,你可以做點帶有黑客意味的事情。這就是你要做的:
在用戶與你的協議交互之前,你要求提供可以證明之前區塊末尾的Merkle證明,他們有足夠的余額來解釋他們當前使用的資金。你需要對每個區塊上的每位用戶跟蹤這一點。(Ari Juels向我概述了此方法)
這種方法可能有些效果。當然,它也存在棘手問題:在鏈上驗證這些鏈上證明非常昂貴,並且沒有用戶會想要生成這些證明以及為此支付gas費用。另外,出於完全正當理由,用戶有可能在早些時候在同一區塊中已更改了余額。因此,從理論上它有一些優點,但這不是一個切實的解決方案。
以上提到的三個解決方案沒有一個有特別的希望。我相信,沒有針對閃貸攻擊的全面防禦措施。但是,有兩個特定的使用確實可以緩解閃貸攻擊:基於市場價格的預言機和治理代幣。
對於像Uniswap或OasisDEX這樣的基於市場的價格預言機,閃貸攻擊使得你在任何情況下都不能將當前的中間市場價格用作為預言機。對於攻擊者來說,在單個交易中移動中間市場價格並製造閃崩、破壞價格預言機,這是孩子的玩法。
這里最好的解決方案是通過TWAP或VWAP使用最後X個區塊的加權平均值。Uniswap v2將原生提供這一點。還有Polaris,這是通用的方法,可以為DeFi協議提供移動平均值。具有諷刺意味的是,Polaris也是由Marble的創始人Max Wolff構建的。(Polaris現在已經被拋棄,但Max看到了這一角落的東西,值得贊)
鏈上治理本身就是自己罐頭里的蠕蟲。鏈上治理通常由治理代幣持有者之間的代幣加權投票決定。但是,如果這些治理代幣出現在閃貸借貸池中,那麼,任何攻擊者可以撿起大量的治理代幣並搞出任何他們想要的結果。
當然,大多數治理協議都要求在投票期間鎖定這些代幣,以防止閃貸攻擊。但是,有些形式的投票並不要求這些,例如carbon投票,或Maker的執行合約。如今,隨著閃貸攻擊的出現,這些形式的投票應該認為完全遭到破壞。
理想情況下,如果治理代幣不可用來閃貸,這就很好。但是,這不取決於代幣的發行方,而是取決於市場。因此,所有治理行為應該要求鎖定,以防止閃貸攻擊。Compound的新COMP代幣更進一步,它對所有協議投票都要求基於時間的加權,甚至削弱針對其治理代幣的常規貸款攻擊。
更廣泛地說,所有治理代幣必須有時間鎖。時間鎖要求所有治理決定必須等待一段時間才能生效(Compound的時間鎖是兩天)。這使得系統可以從任何意料之外的治理攻擊中恢復。盡管MKR還無法被大量閃貸,MakerDAO最近因為易受此類攻擊而被號召實施措施。它最近實施了24小時的時間鎖,關閉了此類攻擊向量。
從長遠看,這一切意味著什麼?
我相信bZx攻擊改變了這一切。
這不會是最後一次閃貸攻擊。第二次bZx攻擊是對第一次的模仿,而且我懷疑在未來幾個月會掀起一波攻擊浪潮。現在,來自世界最遙遠角落的成千上萬名聰明少年正在嘲笑所有這些DeFi樂高,他們在顯微鏡下觀察,試圖發現可以實施閃貸攻擊的方法。如果他們設法成功利用漏洞,那麼,他們就可以賺取幾十萬美元,這在世界上的大部分地區都是可以明顯改變生活的。
有人稱閃貸並不會改變任何東西,因為如果攻擊者有足夠資金,這些攻擊總是可能的。這既正確又相當不正確。大多數鯨魚都不知道如何黑智能合約,而大多數聰明的攻擊者也沒有數百萬美元的資產。(藍狐筆記:此處是說,兩者的交集不大。同時具備兩者的是最可怕的攻擊者。但閃貸到來讓攻擊者獲得了免費的利器)現在,任何人僅花費幾分錢就可以租用一個價值5000萬美元的毀滅球。從現在開始這改變了每個建築被構建的方式。
在bZx攻擊之後,被閃貸攻擊就像是在DAO攻擊後被重入攻擊一樣令人尷尬:你不會得到人們的同情。你應該了解這一點。
最後,這些事件讓我想到加密貨幣的一個古老的概念:礦工可提取的價值。礦工可提取的價值是礦工可以從區塊鏈系統中提取的價值。這包括區塊獎勵和交易費用。但它也包括更多惡意形式的價值提取。例如對交易重新排序或將無賴交易插入區塊。
從根本上講,你應該將所有這些閃貸攻擊都視為是在內存池中可以賺取大量金錢的單個交易。例如,第二次bZx攻擊產生了價值64.5萬美元ETH的收益。如果你一位礦工,你打算開始挖新區塊,請想像一下,查看先前的區塊交易,並對自己說:「等等,那是什麼?當最後一個區塊包含64.5萬美元的利潤時,我為什麼還要打算為區區500美元左右的收益挖新區塊呢?」你不會選擇去擴展區塊鏈,而是回去並試圖重寫歷史,以使自己成為閃貸攻擊者。想想看:僅此一筆交易就比4小時誠實地開采以太坊來得多!
這與包含1000倍於常規區塊獎勵的特殊超級區塊是同構的,正如你預期的那樣,這樣的超級區塊的理性結果應該是礦工競相競爭以孤立鏈的打賞並為自己偷取該區塊。
在均衡狀態下,所有閃貸攻擊應該最終會被礦工提取。(請注意,他們也應該會最終竊取所有鏈上套利和清算)具有諷刺意味的是,這會阻止閃貸攻擊的發生,既然它會導致攻擊者無法利用這些漏洞來獲利。或許最後礦工會通過私人渠道徵集攻擊代碼,並向潛在的攻擊者支付發現者費用。從技術上講,可以使用零知識證明無須信任地完成此類操作。
但這一切現在都還是科幻小說。顯然礦工今天還沒有這么做。
他們為什麼不呢?
有大量的原因。它很難,需要很多工作。EVM很難模擬,它有風險,可能會有漏洞導致損失資金或孤塊,流氓礦池可能會面臨PR危機,被人們冠以「以太坊敵人」的烙印。就目前來看,相對於這么做的收益,礦工可能會在業務、R&D以及孤塊上損失更多。
今天是如此。未來不一定永遠如此。
這為以太坊提供了另外一個動力,以加速並過渡到ETH2.0。盡管以太坊上的DeFi總是很有趣,但它是絕對和不可撤銷的。DeFi在PoW鏈上不穩定,因為所有高價值交易都受制於礦工的重新分配(也稱時間劫匪攻擊)。
為了讓這些系統大規模運行,你需要最終性——讓礦工無法重寫已確認的區塊。這將保護先前區塊的交易免遭重新分配。此外,如果DeFi協議存在於單獨的ETH2.0分片中,它們不容易遭到閃貸攻擊。
據我估計,閃貸攻擊給我們一個小的但有用的提醒,那就是現在還很早期。我們還遠沒擁有可持續的架構,一個可為未來金融系統構建的架構。
目前,閃貸會是新常態。也許從長期看,所有以太坊上的資產都可用於閃貸:交易所持有的所有抵押品,Uniswap中的所有抵押品,也許所有ERC-20代幣本身。
誰知道呢?這只是幾行代碼的事。
B. 2022年新趨勢,「DAO」到底是什麼
你能想像一種與世界各地的其他人一起組織的方式,彼此不了解對方但是建立相應的規則,並自主地做出自己的決定,所有這些都編碼在區塊鏈上嗎?
DAO 正在使這成為現實。
最近,一些 DAO 開始吸引更多傳統投資者的注意力,包括億萬富翁馬克·庫班 (Mark Cuban),他稱它們為「進步主義的終極結合」。風險投資公司 a16z還在個人 DAO 和支持 DAO 創建的公司中領導了數百萬美元的融資。
隨著Messari 預測 DAO 將成為該領域的「下一個大趨勢」時, 你可能想知道 DAO 到底是什麼?
今天,我們就為你解讀一番。
1
那,什麼是DAO?
DAO的全稱是Decentralized Autonomous Corporations,意為 去中心化自治組織。
要了解 DAO,首先需要了解其背後的技術。 大多數 DAO 依賴於區塊鏈技術和智能合約,它們是在區塊鏈上運行的代碼集合。
我們知道,在傳統組織中,通常有一個層次結構: 正式的董事會、高管或高層管理人員決定結構並有權做出改變。
而DAO 是去中心化的,這意味著它們不受個人或實體的管理, 每個 DAO 的規則和治理都編碼在區塊鏈上的智能合約中,除非由 DAO 成員投票通過,否則無法更改。 每個 DAO 的成員可以共同對決策進行投票,而不是少數人擁有多數發言權,通常是在平等的基礎上進行投票。
對於 DAO 來說,區塊鏈可以充當主幹,保持每個鏈上的結構和規則。 一個DAO的誕生,必須具備三個基本要素:
DAO 並不新鮮,但它們正變得越來越主流,接下來我們來分解它們如何工作以及它們是否安全。
2
DAO 的運行與安全問題
DAO 需要以下要素才能充分發揮作用:一組運行的規則,組織可以用來獎勵其成員的某些活動的代幣之類的資金,以及為建立操作規則而提供的投票權。 此外,也是最重要的,是一個良好而安全的結構。
投票系統的一個潛在問題是,即使在其初始代碼中發現了安全漏洞,也無法在多數人投票之前予以糾正。在投票過程中,黑客可以利用代碼漏洞中的漏洞進行攻擊。
2016 年 5 月,德國初創公司 Slock.it 推出了創意命名的「The DAO」,以支持他們的去中心化版 Airbnb。當時,眾籌活動取得了巨大的成功,籌集了價值超過 1.5 億美元的以太坊。
不幸的是,他們在 DAO 中使用的代碼存在某些問題。 不可避免地,在 2016 年 6 月,黑客基於這些漏洞攻擊了 DAO。黑客獲得了 360 萬個 ETH,當時價值約 5000 萬美元。
這在 DAO 投資者中引發了一場大規模且有爭議的爭論,一些人提出了各種解決黑客問題的方法,另一些人則呼籲永久解散 DAO。
當時DAO 建立在以太坊網路上,使用智能合約演算法來確保其治理結構和經濟激勵。為了阻止網路攻擊,以太坊區塊鏈進行了硬分叉,導致以太坊分裂成兩個不同的區塊鏈——今天的以太坊,被盜資金被撤回並返還,以及以太坊經典,原始區塊鏈繼續運行,被黑客入侵的資金被從未恢復。
這仍然被稱為加密貨幣中最大的黑客攻擊之一,暴露了 DAO 的風險並削弱了投資者的信任。
根據IEEE Spectrum 的說法 ,DAO 容易受到編程錯誤和攻擊向量的影響。 事實上,該組織結構的潛在後果還有可能很多,投資者擔心他們會為 DAO 作為一個更廣泛的組織所採取的行動承擔責任。
3
今天如何使用 DAO?
到目前為止,DAO被用於許多場景, 例如投資、慈善、籌款、借貸等 ,所有這些都沒有「中介」參與。
例如,一個慈善DAO可以接受來自世界各地的人們的捐贈,成員們可以決定如何使用捐贈;自由職業者網路DAO可以創建一個承包商網路,這些承包商將資金用於辦公空間和軟體訂閱;風險投資DAO可以創建一個風險基金,匯集投資資本並投票支持風險投資,償還的錢可以在 DAO 成員之間重新分配。
近兩年,由於去中心化金融 (DeFi) 的爆炸式增長,導致人們對 DAO 的興趣重新升溫。
DAO 的未來會怎樣?截至 2020 年中期,最初設想的 DAO 尚未恢復。盡管如此,人們對去中心化自治組織作為一個更廣泛的群體的興趣繼續增長。
DAO 還需要克服許多潛在的監管和法律挑戰,尤其是在美國。關於美國潛在的法律框架如何影響 DAO 以及它們如何運作,還有幾個未知數。
盡管在合法性、安全性和結構方面存在許多揮之不去的擔憂和潛在問題,但一些分析師認為,這種類型的組織最終會脫穎而出,甚至可能取代傳統結構的企業。