⑴ 關於以太坊ETH合並的錯誤觀點理清
隨著合並的臨近,越來越多的文章在向人們發出信號:它確實快要臨近了。這也帶來了和 PoS 相關的一系列問題的討論,人們在反復討論著同樣的話題和同樣的誤解。在上周 Kiln 測試網成功合並時,我已經在一定程度上看到了這一狀況,今後我們還會看到更多類似的東西,所以我將一些常見的問題、觀點歸納如下。
每當看到有人提出這些觀點時,我就可以把這篇文章分享給他,我希望大家也可以這樣做。如果本文存在一些紕漏,還望斧正或提出補充建議。
什麼是合並?
更多的信息可以在 ethmerge.com 上找到,所以本部分將簡單介紹。
在合並之後,Ethereum 將採取 PoS(股權證明)而不是 PoW(工作量證明)共識。合並並非「ETH 2.0」、也不存在「ETH 2.0」,這已經是一個過時的術語。
如果是 ETH 持有者,則不需要做任何事情。合並後你仍將持有相同數量的 ETH,沒有「ETH2 幣」,也不需要進行任何遷移。一切都完全相同,只有共識機制發生了變化。
之所以被稱為「合並」,是因為 ETH 將信標鏈(共識層)與現存的鏈(執行層)合並,並拋棄了執行層的 PoW 部分。
解釋一下,「共識」只是一個花哨的詞彙,其含義是指如何對交易進行排序並保證安全性。PoW 和 PoS 都是實現共識的不同手段。
PoW:"打亂區塊順序的成本太高了,因為按規則辦事更劃算。"
PoS:「擾亂區塊順序的成本太高了,因為如果我這樣做就會失去我抵押的所有錢。」
由於只是共識機制的改變,PoS 本身並不會大幅降低 Gas 費用。
為什麼合並?
降低安全成本,因為達成共識所需的能源更少。
對於 PoW 來說,收益需要為礦工使用的所有硬體和能源買單,否則將無人再去挖礦。這就需要大量發行並迅速賣出 Ethereum 以換取法幣來支付賬單。
而 PoS 則不然,PoS 只需要支付給投機者一些收益,讓人們願意存入資本,而不是直接投資到其他地方。除了一台普通的電腦和互聯網連接之外,並不需要支付大額賬單。所以收益率只需要反映所涉及的機會成本和風險。
更具可持續性。
一條鏈的安全性基本上與它的市值成正比。無論是 PoW(更高價值的 Token 獎勵 = 更有理由按規則行事 = 更多的礦工 = 更難以破壞共識)或 PoS(更高價值的抵押 Token = 更有理由按規則行事以避免失去抵押品)都是如此。
新發行的 Token 本質上是將價值從所有持幣人身上轉移走,並重新分配給特定的人。在其他條件相同的情況下,將這些 Token 賣出可以從網路中提取價值。
這為未來的許多擴容解決方案打開了大門:數據分片、無狀態、輕客戶端等等。
通過分離執行層和共識層,這將有助於降低未來的代碼復雜性。
安撫環境和 游戲 玩家當然是一個積極的副作用,但這並非是切換到 PoS 的主因。切換更多是由於外部因素導致的,Ethereum 作為一個協議並沒有對整個網路太多的控制權,例如能源生產、GPU 供應鏈等等。
何時合並?
目前官方尚未公布日期。綜合各方面的原因,開發者和社區對 6 月中旬合並持謹慎樂觀的態度
目前仍在測試之中,在開發人員完全確信不會出現錯誤之前,不會進行合並。
我個人不把希望寄託在 6 月,但我認為至少也會在夏季完成,除非在測試過程中出了極大的問題。例如,出現一個需要幾周時間來修復的關鍵錯誤,或者規範本身存在需要幾個月時間來修復的漏洞。
難度炸彈被設置在 6 月,所以無論屆時是否進行合並,都將進行一次硬分叉。
建議將 wenmerge. com 存入書簽,以便快速查看測試網合並的最新預估。
流傳已久的錯誤觀點
觀點:「你這個白痴!開發團隊會像過去一樣拖延,早在數年前他們就應允合並了,但至今仍未兌現。」
首先是一些說明:現在仍未宣布正式的合並日期,此前也從來宣布過。一個本就不存在的最後期限,何來的拖延之說呢?
類似於「將在 2018 年轉換為 PoS」的說法來自於極端樂觀的態度,並且低估了 PoS 設計的復雜性和從 PoW 到 PoS 的安全過渡的復雜性。此前開發者所做的工作相當於部分完成了 Casper FFG 規范(一個混合 PoW 和 PoS 的機制),但它最終被廢止了。現狀已經存在很多不同了:
經過多年的研究、對潛在的攻擊方向進行分析,現在擁有一個完整的協議規范。
客戶端已經實現,現在只差測試尚未進行。
合並時所有人都在工作,除了合並外沒有其他工作。合並所需的必要步驟都已完成。這甚至不是「他們已經完成了像 EIP1559 這樣復雜的內容,所以現在可以把更多的注意力集中在合並上」,而是:「他們把所有的注意力都集中在合並上」。不可能會出現這種狀況:因為開發者需從事其他內容的工作而導致合並再次被推遲。在合並完成之前,他們沒有其他事情可以做。
自 2020 年 12 月以來,PoS 實際上正在以信標鏈的形式運行。這意味著以太坊的 PoS 已經在生產環境中進行了一年多的測試(在一定程度上),目前有超過 1000 萬 ETH 在運行。它只是還沒有為執行層生產區塊而已。
觀點:「數以百萬計的質押 ETH 將在解鎖的那一刻崩盤。」
可以肯定的是,會有大量的鎖倉者想要最終獲利,尤其是那些在 32 個 ETH 僅價值 1 萬美元時就鎖定了 ETH 的人。但從一角度來看,還有很多需要考慮的問題。
合並並不會解鎖任何 ETH。解鎖將在合並後的第一次硬分叉中進行,可能是 6-8 個月後。這意味著數個月內都將沒有 PoW 方式增發的 ETH(約 13000 ETH/天)被拋售,也沒有 PoS 增發的 ETH 進入流通。
就像存 ETH 要排隊一樣,取 ETH 也要排隊。假設發生大規模拋售事件,每個人都將處於排隊之中,以每天 1125 名的速度依次解鎖。所以不存在 "開閘放水 "的時刻。每個人解凍都需要一年多的時間,一年的時間里,每天有約 38000 個 ETH 進入流通領域(大約是日均量的 1%)。
合並後,驗證者也將開始收到費用獎勵,有預估表明收益率或將翻倍。現在有成千上萬的人在排隊等待進入質押。他們既然可以接受 5% 的 ETH 收益率,我不認為他們會在收益率變成 10% 的時候放棄存入。
到目前為止,抵押所涉及的最大風險是合並本身。一些災難性的事情可能會導致合並出錯,盡管存在這種風險、盡管 ETH 被鎖定到一個未知的未來日期,但人們已經鎖定他們的 ETH 一年多了。有多少人或機構還願意袖手旁觀、等待這種風險消失後再進入呢?
抵押者退出就意味著更少的驗證者,這意味著對不退出的抵押者有更高的獎勵。這也意味著更能激勵其他之前未投資的人開始投資......
當然,這是加密世界,讓加密歸於加密。合並將帶來興奮和波動,可能會出現「sell the news」的跌幅,誰又知道呢?我不會假裝預知未來,但在我看來,更多的 ETH 可能會流入、而不是流出鎖倉。
觀點:「如果 PoS 這么好,Ethereum 為什麼不從一開始就這樣做呢?」
PoW 很容易概念化並實現,PoS 則不然。當我們回到 2014 年,PoS 尚是一個仍在研究的理論概念,只有一些區塊鏈實施了它的某種特定版本。
在考慮實施 PoS 之前,需要從研究角度解決一些基本問題。
沒有放之四海而皆準的 PoS。每個 PoS 區塊鏈都有自己的 PoS 規范,在各方面都有優缺點,所以這並非是「這個鏈做到了,為什麼 Ethereum 不能做同樣的事情」這樣簡單。
以一個 PoW 鏈作為開始,讓任何人都可以在無需許可的條件下開采 crypto,這讓 crypto 的分發機制比那些最初就是 PoS 的鏈要好得多。因為那些鏈從最初就是 PoS,這樣必須決定如何分配初始 crypto,而不是無需許可的分發 Crypto。
Ethereum 存在預挖、預售,但經過多年的換手,現在已經稀釋到一半左右,使其分布更接近 BTC 的分布。所以在 2022 年,當 ETH 作為流動性極強且易於獲得的資產時,這並不是什麼大問題。
觀點:「這實際上只是在多年努力後最後一次坑害礦工的伎倆。」
從第一天起,PoS 就是最終的目標,每個人在挖礦時都知道它早晚有一天會結束。這里並沒有什麼不公正的事情發生。
經濟因素勝過任何形式的礦工對鏈的忠誠度。你可以把一條鏈看作是一個企業,把礦工看作是雇員。
礦工/雇員已經為他們提供的服務(即安全共識)獲得了區塊獎勵。工資由僱主支出,它來自於稀釋現有持幣者的價值。
礦工流向提供獎勵最高的鏈,如果有另一個可由 GPU 開採的 crypto 可以提供更多的獎勵,大多數礦工會立即拋棄 Ethereum。
類似地,如果驗證者能夠以更低的價格完成它所需要的服務,那麼 Ethereum 將支付更少的費用。
這並不完全是排他性的。礦工也可以 ETH 的持有者,以及區塊鏈的使用者。沒有什麼能阻止他們成為抵押者並獲取抵押獎勵。
觀點:「如果挖礦沒有花費現實世界的能源,則這枚 crypto 就不再具有內在價值。」
我不太相信這種說法。反復計算哈希值直到找到一個符合任意要求的哈希值,這並沒有什麼神奇之處。我的意思是,PoW 的區塊鏈其工作是通過解密來完成的,但這並不意味著解密本身就能為世界帶來價值。提高一個 Crypto 的挖礦難度並不會神奇地讓每個人都變得更富有,它只會讓挖礦的利潤降低(當然,如果對這種 Crypto 的需求量也上升則不然)。
在我看來,一個幣的價值最終來自於供給和需求,而需求來自於區塊空間的價值。無論 ETH 是由礦工還是鎖倉者生產的,人們都需要 ETH 來購買區塊空間。當然,礦工越多,安全性/去中心化程度越高,這進一步增加了區塊空間的價值主張,這是一個正反饋循環,但反饋循環也存在於 PoS 的 Ethereum 中,它也同樣酷。
觀點:「PoS 是中心化的不二法門。」
PoS 與 PoW 基本相同,但又存在差異。「更好」或「更壞」只取決於你的看法。在我看來,PoW 實際上只是 PoS 的額外步驟。
Ethereum 作為一個社區高度重視去中心化,任何潛在的中心化趨勢都會被研究團隊注意到並提出緩解的方法,即使是以其他重要的東西為代價,就比如可擴展性(保持低 Gas 限制以便更多的節點可以參與其中,即使這會導致擁堵和高費用)。
盡管目前存在一些缺點,但去中心化是一個緩慢的過程,我們還沒有到那一步。目前有許多中心化的拐杖從長遠來看是需要消失的。我個人認為,想出一大堆東西來解決某個問題比「放棄並說因為某問題而不能做」要吸引人得多。
Ethereum 的 PoS 有一些有趣的設計經常被忽視。單個驗證器癱瘓、搗亂或直接攻擊網路都不會受到很嚴重的懲罰。而一千個驗證器同時這樣做則會受到更嚴重的懲罰。
這意味著,如果你是一個擁有數千個驗證者的大型企業,為了你自己的利益,應該把它們去中心化,避免使用雲主機、使用不同的客戶端等等。當然,資本仍然是集中的,但至少故障點是去中心化的,這對網路的整體 健康 是有利的。
與依靠中心化攤銷成本的大型礦業相比,通過能源更容易發現 PoW 挖礦並被當局關停。在全世界范圍內移動采礦設備是很難的,但鎖倉則不需要,不需要消費級設備以外的任何額外硬體。
觀點:「PoS 實際上就是『越有錢賺得越多』。」
是的。不幸的是,我們生活在一個財富高度不平等的世界。blockchain 並不能解決這個問題。
可這也是 PoW 的真實情況。誰有錢誰就可以買更多的礦機、賺更多的錢。在礦業,投資回報率也在隨著規模經濟的發展而變得更好。集中式的采礦作業可以獲得更好的硬體折扣、並搬到電力便宜的地方。獨立小礦工在現實中根本無法與之競爭。有了 PoS,每個人都能按比例獲得相同的收益,無論他們的股份是 10 美元還是 1000 萬美元。
它可能是中心化,但那些大的采礦業務沒有理由攻擊網路並削弱它,因為他們在基礎設施上投入了數百萬美元。所以……或許你對大型中心化主體的存在沒有意見,只是對他們在網路中存在巨大利益而不滿?
觀點:「存款被動產生利息,這是在無中生有地印錢?這簡直就是中央銀行和法幣的翻版!」
驗證者仍在進行著「工作」:創建區塊和驗證其他區塊。只是這些工作完全由 blockchain 達成共識所需的實際有用的工作組成,而不是一遍又一遍地計算哈希值。
這並不是真正的 "憑空印出的免費的錢",這些資金仍然有成本,它們只是比能源賬單更抽象、更不直觀而已。他主要存在於下面幾個成本:
機會成本:如果另一項投資能給你帶來更好的收益,為什麼還要賭?
流動性差:從你存款的那一刻起資金就被鎖定了。你需要排隊等待你的驗證器激活,而當你取款時,又要排隊才能取回。
固有風險:這仍然是一個相當新事物,可能會出現問題:一個關鍵錯誤、網路被攻擊、你的抵押物受損等等。
波動性:這仍然是一種不穩定的資產,如果你以本國法幣計價,那麼使用一種可能一夜之間下跌 30% 的資產來獲取 5% 的收益率並不是那麼好。
維護:驗證者需要維護驗證器、更新軟體等,以此來確保 100% 的正常運行時間。
這就是它有趣的地方:越多的鎖倉者、每人的獎勵就越低。這也意味著所有成本都將交由市場本身定價。如果質押收益率太低,那麼獎勵就不能證明成本的合理性,人們就會撤出並投資於其他地方,這一舉動會使收益率回升。同樣,如果收益率太高,也會吸引更多的資本使收益回落。
就通貨膨脹而言。假設市場認為 5% 是理想的收益率,其中 3% 來自增發。這樣算下來,每年大約有 3000 萬個 ETH 被抵押,將發行 90 萬個新 ETH。在總供應量為 1.2 億 ETH 的情況下,通貨膨脹率為 0.75%。只要 Gas 費用高於 23gwei,EIP1559 燃燒的 ETH 就將超過這一數量。我要強調的是,Ethereum 很快就會成為一種帶有收益的通縮資產。
「ETH 一直沒有供應上限,且他們一直在改變貨幣政策。」
多年來,Ethereum 的目標一直是「確保網路安全的最低可行發行量」,將網路安全置於控制供應上限之上。對貨幣政策的任何更新都沒有增加供應通貨膨脹。從第一天起低通脹率就一直是目標。
一旦 EIP1559 的燃燒率與發行率相匹配,就會有一個作為有效供應上限的平衡點——再次由市場力量決定對 Ethereum 區塊空間的估值。
並不存在一個 "Ethereum 中央銀行 "任意調整利率並向親信印鈔。市場本身決定了有多少通貨膨脹/通貨緊縮,並不存在一個可以像中央銀行控製法幣通貨膨脹率那樣的實體控制 Ethereum。
觀點:「巨鯨有足夠的錢來接管和改變 游戲 規則,並打擊誠實的鎖倉者。」
不,Ethereum 沒有任何形式的鏈上治理。
協議更新是社區的努力(Layer 0),你不需要鎖倉 ETH 來提出不良的提案、參與協議更新。
這一過程與 PoW 完全相同。即使你擁有 99% 的算力,你也不能在沒有私鑰的情況下進行無效的交易、竊取他人資產、改變協議規則,或者除了重組區塊之外真的做些什麼。1% 的誠實節點將拒絕任何不遵守規則的區塊,你將在一個無效的/無用的鏈上挖礦。現在把「哈希算力/挖礦」換成「質押金額/鎖倉」,PoS 也是如此。不過不同的是,被發現重組區塊的人將被銷毀他們的整個權益,而鏈不能完全摧毀采礦機。
簡單地說,這涉及到大量的 ETH。在合並之前高達 1000 萬計數的 ETH,約合 300 億美元。鎖倉的 ETH 數額和 ETH 的價值預計都會上升,所以攻擊變得越來越不可能,因為做一次攻擊所涉及的經濟成本太高了。而且如果攻擊來自外部行為者,他能夠獲得這么多 ETH 就是很荒謬的,你在哪裡能買到 1000 萬 ETH 來擁有 51% 的股份?
觀點:「32 個 ETH 太多了,普通人沒有這么多錢。」
我同意這是一個很大的問題。之所以有這么高的數字,是因為它必須落在一個技術的平衡點上:它必須低到有充足的驗證者來保證鏈的安全,但又要高到避免驗證者太多以使鏈的開銷膨脹。
從技術角度來看,有一大問題涉及到 32ETH,當時 32ETH 價值約 7000 美元。2017 年的早期曾有人甚至建議最低超過 1000ETH。
值得慶幸的是,就像礦池的存在一樣,也有鎖倉池,允許用戶以小金額參與鎖倉。這歸功於像 RocketPool、Secret Shared Validators 這些使用智能合約的無許可、去中心化的非託管協議。而且由於上面提到的二次懲罰,我相信從長遠來看,去中心化的鎖倉操作會比中心化的要好。像 Rocket Pool 這樣的協議最好被看作是基礎鎖倉的高級抽象,而不是 "只是一個鎖倉池"。
觀點:「PoS 還沒有被證明,而我們知道 PoW 是有效的。」
這實際上是完全公正,顯然我們無法真正的反駁這一點,只有時間會證明。只是我認為在 Ethereum 正在轉向 PoS 的背景下,這是無關的。如果你不相信它,就不要參與/投資它。我個人相信一個長期可持續的 PoS Ethereum,但即使如此,我也樂於見到 bitcoin 繼續沿用它的 PoW。
這都是我們一生中偉大的 crypto 實驗的一部分。PoS Ethereum 要麼只是一陣風,失敗直至默默無聞,要麼將成功地創造出能夠超越人類的怪物般的強大網路。
我在 bitcoin 和 Ethereum 中看到,為了實現這一目標,優先考慮去中心化是關鍵。盡管兩者的理念大不相同,但我很高興能同時擁有這兩種東西,以真正看到長期的價值。
⑵ 以太坊區塊鏈之Bug --2020/05/19
為了防止交易重播,ETH(ETC)節點要求每筆交易必須有一個nonce數值。每一個賬戶從同一個節點發起交易時,這個nonce值從0開始計數,發送一筆nonce對應加1。當前面的nonce處理完成之後才會處理後面的nonce。注意這里的前提條件是相同的地址在相同的節點發送交易。
以下是nonce使用的幾條規則:
● 當nonce太小(小於之前已經有交易使用的nonce值),交易會被直接拒絕。
● 當nonce太大,交易會一直處於隊列之中,這也就是導致我們上面描述的問題的原因;
● 當發送一個比較大的nonce值,然後補齊開始nonce到那個值之間的nonce,那麼交易依舊可以被執行。
● 當交易處於queue中時停止geth客戶端,那麼交易queue中的交易會被清除掉。
第一個欄位 AccountNonce ,直譯就是賬戶隨機數。它是以太坊中很小但也很重要的一個細節。以太坊為每個賬戶和交易都創建了一個Nonce,當從賬戶發起交易的時候,當前賬戶的Nonce值就被作為交易的Nonce。這里,如果是普通賬戶那麼Nonce就是它發出的交易數,如果是合約賬戶就是從它的創建合約數。
為什麼要使用這個Nonce呢?其主要目的就是為了防止重復攻擊(Replay Attack)。因為交易都是需要簽名的,假定沒有Nonce,那麼只要交易數據和發起人是確定的,簽名就一定是相同的,這樣攻擊者就能在收到一個交易數據後,重新生成一個完全相同的交易並再次提交,比如A給B發了個交易,因為交易是有簽名的,B雖然不能改動這個交易數據,但只要反復提交一模一樣的交易數據,就能把A賬戶的所有資金都轉到B手裡。
當使用賬戶Nonce之後,每次發起一個交易,A賬戶的Nonce值就會增加,當B重新提交時,因為Nonce對不上了,交易就會被拒絕。這樣就可以防止重復攻擊。當然,事情還沒有完,因為還能跨鏈實施攻擊,直到EIP-155引入了chainID,才實現了不同鏈之間的交易數據不兼容。事實上,Nonce並不能真正防止重復攻擊,比如A向B買東西,發起交易T1給B,緊接著又提交另一個交易T2,T2的Gas價格更高、優先順序更高將被優先處理,如果恰好T2處理完成後剩餘資金已經不足以支付T1,那麼T1就會被拒絕。這時如果B已經把東西給了A,那A也就攻擊成功了。所以說,就算交易被處理了也還要再等待一定時間,確保生成足夠深度的區塊,才能保證交易的不可逆。
Price 指的是單位Gas的價格,所謂Gas就是交易的消耗,Price就是單位Gas要消耗多少以太幣(Ether),Gas * Price就是處理交易需要消耗多少以太幣,它就相當於比特幣中的交易手續費。
GasLimit 限定了本次交易允許消耗資源的最高上限,換句話說,以太坊中的交易不可能無限制地消耗資源,這也是以太坊的安全策略之一,防止攻擊者惡意佔用資源。
Recipient 是交易接收者,它是common.Address指針類型,代表一個地址。這個值也可以是空的,這時在交易執行時,會通過智能合約創建一個地址來完成交易。
Amount 是交易額。這個簡單,不用解釋。
Payload 比較重要,它是一個位元組數組,可以用來作為創建合約的指令數組,這時每個位元組都是一個單獨的指令;也可以作為數據數組,由合約指令來進行操作。合約由以太坊虛擬機(Ethereum Virtual Machine,EVM)創建並執行。
V、R、S 是交易的簽名數據。以太坊當中,交易經過數字簽名之後,生成的signature是一個長度65的位元組數組,它被截成三段,前32位元組被放進R,再32位元組放進S,最後1個位元組放進V。那麼為什麼要被截成3段呢?以太坊用的是ECDSA演算法,R和S就是ECSDA簽名輸出,V則是Recovery ID。
R,S,V是交易簽名後的值,它們可以被用來生成簽名者的公鑰;R,S是ECDSA橢圓加密演算法的輸出值,V是用於恢復結果的ID
⑶ 以太坊存在的問題
1.擴展性不足:
以太坊社區的主要開發人員和研究人員始終認為區塊鏈技術要實現大規模採用,可擴展性是區塊鏈應用程序需要解決的唯一最重要的關鍵。
以太坊的底層設計,最大的問題是以太坊只有一條鏈,沒有側鏈,它把所有的程序對等的跑在全球所有節點的礦機上。這樣一個很耗資源的程序,會導致問題越來越嚴重。
2.合約程序漏洞,無法抵禦DDOS攻擊
據相關研究表明,在基於以太坊的近100萬個智能合約上,發現有34,200(約3%)個含有安全漏洞,將允許黑客竊取ETH、凍結資產或刪除合約。這幾年,以太坊面對合約程序漏洞和DDOS攻擊的問題,也一直無法找到很好的解決辦法。(更好用的數字貨幣交易平台「幣匯」)
3.對於ICO泡沫和項目方砸盤
目前的ETH下跌,很大程度上來自於項目方的砸盤套現,這個問題可以在ICO代幣融資上進行規則限制,不能像現在這樣毫無成本的就能發一個幣,而且還沒有任何監督懲罰機制。任何事情都需要有一套合理的演進規則,大家按規則辦事,所謂無規矩不成方圓。在規則的基礎上,各類ICO項目有效監督,有序進出,才是一個正常的市場,這樣才可能維系著代幣生態的持續、穩定發展。
4.智能合約費用過高
在以太坊上現在還是POW的挖礦模式,交易是有手續費的,用來激勵礦工來處理交易和保護網路,不同的是以太坊是以「gas」的形式來收費的。
在以太坊協議中規定,交易手續費=Gas 數量 x Gas 價格,其中 Gas 數量由智能合約的復雜程度決定,而 Gas 價格則由合約發起人決定。這對開發者和用戶意味著什麼呢?雖然讀取本地區塊鏈是免費的,但寫入和運算是花錢的,儲存更是尤其昂貴,因為任何寫入的信息都會被永久的儲存著。
5.社區對共識協議改變的分歧
以太坊計劃實現將 POW 機制改為 POW/POS 混合共識機制。但這個涉及到技術開發和礦工雙方能否達到利益共識的問題了。如果協議發生了變化,社區意見不合時,就會導致分叉,大家各自玩各自的。
⑷ 以太坊的智能合約再次被黑客攻擊,到底腫么啦
不知道樓主說的被黑客攻擊是在哪聽說的消息,不過這個也不是不可能,雖然目前區塊鏈熱度很高,但是任何東西沒有絕對的安全性,哪怕是比特幣也不行
⑸ 以太坊帶來了那些爭議和質疑呢
以太坊和比特幣是有著本質區別的,區別在哪裡呢?比特幣定義的是一套貨幣體系,而以太坊側重的是打造一條主鏈(可以理解為一條公路),可以讓大量的區塊鏈應用跑在這條公路上。
從這一點來看,以太坊的應用場景更廣泛,這也是為什麼我們說以太坊標志著區塊鏈
1.0時代一個單純的貨幣體系,向區塊鏈2.0時代實現其他行業以及應用場景的轉變。
但是,世界上沒有十全十美的事物,以太坊雖然拓展了區塊鏈在各行各業的應用范圍,還提升了處理交易的速度,但是它也存在著一定的爭議與質疑。
一、以太坊的擴展性不足的解決之道:分片技術和雷電網路
以太坊的底層設計,最大的問題是以太坊只有一條鏈,沒有側鏈,這就意味著,所有程序都要對等地跑在這條鏈上,消耗資源的同時,還會引發系統擁堵。正如去年非常火爆的以太坊游戲「加密貓」,這個游戲火爆的時候,一度引發以太坊網路癱瘓。
對於提升處理能力這個問題,以太坊提出兩種方式:一個是分片技術(shard),一個是雷電網路,下面我們分別介紹一下這兩種技術。
(一)分片技術
以太坊創始人 V 神(Vitalik Buterin)認為,諸如比特幣這種主流的區塊鏈網路,之所以處理交易的速度很慢,是因為每一個礦工要處理全網的每一筆交易,這樣的效率其實是非常低下的。分片技術的構想是:一筆交易不必發動全網所有節點都去處理,只要讓網路中的一部分節點(礦工)處理就好了。於是,以太坊網路被劃分成很多片,同一時間,每一分片都可以處理不同的交易,這樣一來,會大大提升網路性能。
但是,分片技術也是有一定爭議的。我們知道,區塊鏈技術的重要思想是去中心化,全網都去見證(處理)同一交易,這才具有最高的權威性。而以太坊分片技術,並不是所有節點共同見證,而是類似於分小組見證,這樣一來,它便失去了絕對的「去中心化」屬性,只能通過犧牲掉一定的去中心化特性來達到高性能的目的。
(二)雷電網路
雷電網路使用的是鏈下交易的方式。這是什麼意思呢?它的意思是:使用雷電網路的參與者在互相轉賬時,不需要通過以太坊主鏈交易確認,而是通過參與者之間創建支付通道,在鏈下完成。
不過,雷電網路並不是脫離主鏈的,在建立支付通道之前,需要先用主鏈上的資產做抵押,生成余額證明(Balance Proof),擁有餘額證明才能表明你能做出相應余額的轉賬。在交易雙方都持有餘額證明的情況下,雙方可通過支付通道在鏈下進行無限制次數的轉賬。
只有在完成鏈下交易,需要將資產轉回鏈上時,才會在以太坊主鏈上登記主鏈賬戶的余額變化信息,而這期間不管發生多少次交易在主鏈上是不會有記錄的。
雷電網路還有一個實實在在的好處,就是可以為你省下礦工費用。目前我們在以太坊主鏈上進行交易,需要消耗 Gas,需要支付礦工費用,那麼一旦將交易搬到鏈下,就可以節省這一部分的成本。
當然,雷電網路並不是十全十美的。在使用雷電網路時需要用主鏈上的資產作抵押;而這部分資產作為抵押物,在使用者完成鏈下交易之前是不能使用的。這也就決定了,雷電交易只適合小額交易。
上面就是以太坊擴展性不足的問題,以及目前提出的兩個主要解決方案:分片技術和雷電網路。
二、以太坊的智能合約存在漏洞與臭名昭著的 The Dao 事件
以太坊的智能合約很強大,但是,凡是代碼都會存在漏洞的,以太坊智能合約最大的爭議就在於所謂的漏洞,也就是安全性問題。據相關研究表明,在基於以太坊的近100萬個智能合約上,發現有34200(約3%)個含有安全漏洞,將允許黑客竊取ETH、凍結資產或刪除合約,比如說,臭名昭著的The Dao 事件。
(一)Dao是什麼意思?
介紹 The Dao 事件之前, 我們先見到介紹一下 DAO 是什麼。DAO 是 Decentralized
Autonomous Organization 的簡稱,可以理解為:去中心化自治組織。從以太坊的角度來理解,DAO 是區塊鏈上的某一類合約,或者一個合約組合,用來代替政府的審查以及復雜等中間程序,從而實現高效的、去中心化的信任的系統。所以,DAO 不是特定的某個組織,也就說呢,可以有很多的DAO,各種各樣的DAO。
(二)臭名昭著的The Dao事件
但是,我們現在提到DAO,基本上所指的都是The DAO事件,也就是我們剛剛說的那個臭名昭著的黑客攻擊事件。我們知道,英文中的 The是特指的意思,The DAO事件呢就
是特指的那個DAO事件,因為我們剛剛說了DAO不是特定的某個組織,可以有很多的DAO,各種各樣的DAO。
2016 年的時候,德國一家專注「智能鎖」的公司 Slock.it,為了實現去中心化的實物交換(比如說:公寓啊,船隻啊),在以太坊上發布了 DAO項目。並且於2016年4月
30日開始,融資窗口開放了28天。
沒想到,這個DAO項目的人氣非常高,短短半個月就籌得了超過一億美元,而到整個融資期結束,一共籌集到1.5億美元,由此呢,它成為歷史上最大的眾籌項目。然而好景不長,到了6月份,黑客利用智能合約裡面的漏洞,成功轉移了超過360萬個以太幣,並投入到一個DAO子組織中,這個組織和The DAO有著同樣的結構。以至於當時以太幣價格從20多美元直接跌破13美元。
這個事件說明智能合約的確是有漏洞的,而且一旦漏洞被黑客利用,那麼後果是非常嚴重的。這就是現在很多人批評以太坊,說它的智能合約不智能。
對於這個問題,目前國外有很多公司為了解決智能合約的漏洞問題 ,開始提供代碼審計服務。而從技術的角度來說,目前一些團隊正在對智能合約進行檢驗,這些團隊多數由哈佛、斯坦福和耶魯的教授帶隊,部分團隊已經獲得了頭部機構的投資。
除了目前以太坊存在的擴展性不足、智能合約漏洞問題,對於以太坊的爭議還在於它所追求的POS共識機制,也就是權益證明機制,在權益證明機制下,如果說誰持幣的數量越大、持幣時間越久,獲得的「權益」(利息)就越多,還有機會得到記賬權力,記賬又可以獲得獎勵,那麼這樣一來,容易造成「強者越強」的寡頭優勢。
還有一個問題就是ICO亂象的問題。ICO是區塊鏈項目籌措資金的常用方式,咱們可以理解為預售。以太坊上ICO項目的爆發,滋生了打著ICO旗號進行資金盤、詐騙圈錢等不法行為,對社會和金融穩定造成安全隱患。
⑹ 簡單解釋何為51%攻擊
你可能會下意識認為加密貨幣是安全可靠的。怎麼說呢,即使網路犯罪分子以不可思議的規律頻繁攻擊交易所和熱錢包,但底層的區塊鏈技術本身天然抗攻擊,不是嗎?
好吧,其實不然。區塊鏈容易遭受所謂的「51%攻擊」傷害。
當有一組礦工控制超過Token哈希算力(計算能力)的50%時,可能會發生51%的攻擊(也稱為「多數攻擊」)。 實際上,「51%」其實用詞不當; 一個成功的攻擊實際上僅需要50%+ 1的哈希算力。
如果一個群體可以達到如此高水平的控制,就可以通過以下方式輕易毀掉相關幣種。
不進行確認從而阻止產生新的區塊
撤消當前塊上已完成的事務
在網路上發起「雙花」
50%+ 1是確保攻擊成功所需的哈希算力。 但是,也有可能以較低的哈希算力成功進行攻擊。 安全團隊使用統計建模來表明當被控制的哈希算力達到約30%時,漏洞風險可能會開始增加。
比特幣以及其他幾個主流幣種使用工作量證明機制來驗證交易並將其廣播到區塊鏈上。
在白皮書中,比特幣的創始人中本聰簡明扼要地將這個過程概括為「一CPU,一票」:
「工作量證明「實質上是一CPU一票,最長的鏈條代表大多數判斷,因為該鏈條擁有最大量「工作量證明」投入。如果CPU算力的大多數由誠實的節點控制,誠實的鏈條將以超過其他與之競爭鏈條的速度快速生長。
您可能已經注意到上述引文中的大問題:「如果大部分CPU功率由誠實節點控制......」
當不誠實的節點數量超過誠實節點時,問題就出現了。 在這些情況下,他們可以「投票孤立」合法的礦工,確保他們自己控制最長的鏈條,從而控制整個加密貨幣。
中本聰假定,即使礦工可以控制超過50%的節點,他仍然可能「遵守規則」來保護自己的財富:
如果一個貪婪的攻擊者有能力比誠實礦工控制更多CPU算力,他將被迫進行選擇,是通過欺詐以偷回其支付的款項(譯者註:即雙重支付攻擊),還是通過(獲取)生成的新貨幣。他應當會發現,按照規則行事更加有利可圖,這樣的規則有利於他比其他聯合起來的每一個人獲取更多的新貨幣,亦優於破壞系統以及損害自己擁有財富的有效性。
不幸的是,網路犯罪分子並不完全遵循規則。 自中本聰的白皮書發布以來,已有無數的51%攻擊案例。
到目前為止,我們已經利用比特幣來說明51%的攻擊是如何發生的。
然而,雖然在技術層面上比特幣易受攻擊,但在更實際的層面上,由於三個原因,它不太可能成為這個受害者:
1、成本
比特幣網路規模巨大,想要獲得足夠用於攻擊的哈希算力,需要相當大量的資金投入。
據Crypto51稱,對比特幣進行長達一小時的黑客攻擊需要花費237,941美元。 對以太坊進行攻擊的成本同樣令人望而卻步 ——將花費74,837美元。
2、礦池
如今,最大的加密貨幣的礦池分布廣泛。
情況並非總是如此;2014年,Ghash.io大概掌握量51%的比特幣哈希算力。比特幣當時顯然遠不如現在影響大,但仍然令人擔憂。
不得不說Ghash.io賊靠譜,他們幾乎立即放棄了10%算力,並要求社區自願將自己的算力限制在40%內,以保護區塊鏈的長期完整性。
現在最大的比特幣礦池的哈希算力徘徊在20%左右。
3、NiceHash
NiceHash是世界上最大的加密貨幣挖礦算力市場。
據Crypto51估計,NiceHash可以產生的總功率不到比特幣網路總功率的百分之一。 以太坊是5%,比特幣現金是2%。 所有主流幣的百分比都保持相似的低百分比。
因此,即使是武器化的NiceHash也沒有足夠的力量對主流幣進行51%的攻擊。
當你研究較小的幣種時,事情開始發生巨大變化。
就像市值排名前十的幣種,對其發動攻擊基本都是天價,而排名再往後就不好說了。其對應的NiceHash百分比也開始增加。 也有一些較大幣種的百分比令人擔憂。 以太坊經典為82%,門羅幣79%……
2018年5月比特幣黃金遭遇51%的攻擊時,小幣種的脆弱性成為焦點。
比特黃金 ——來自2017年比特幣的硬分叉 - 當時甚至出現不到六個月。
以至於該項目的發言人愛德華·伊斯克拉爾必須告知所有可以交易比特黃金的交易所,將確認數從5個增加到50個,並手動審查大額交易是否存在可疑活動。
「持續攻擊的成本很高。 由於成本很高,攻擊者只有從虛假存款中快速獲得高價值的東西才能獲利。 像交易所這樣的場所,可以自動接受大額存款,允許用戶快速交易另一個幣種,然後自動撤離。 在清算交易資金之前,我們一直建議設置上限以防止此類攻擊,並敦促人工審查BTG的大額存款。「
在很長是一段時間,我們幾乎可以肯定的是,51%攻擊的次數會不斷增加。
但是會有一線希望嗎? 很難說目前存在的數千種山寨幣給最終用戶帶來了什麼實實在在的好處。 如果由此加密世界能圍繞一些較大的幣種進行鞏固,那麼對於該行業的長期健康來說,51%攻擊可能不是一件絕對的壞事。
⑺ 以太坊技術系列-以太坊共識機制
區塊鏈的特點之一是去中心化。也就是節點會分布在各個地方組成分布式系統。各個節點需要對1個問題達成一致,理想情況下,只需要同步狀態即可。
如上圖所示 B節點將a=1=> a=2的狀態同步給 ACDE四個節點,這時系統中狀態變為a=2, 但如果其中有惡意節點 AE 收到通知後把a=1=>a=3修改為錯誤的節點,這個時候大家的狀態就不一致了,此時需要共識機制使系統中得到1個唯一正確的狀態。
如上面說到分布式系統存在惡意節點導致系統中狀態不一致的情況有1個比較著名的虛擬問題-拜占庭將軍問題。
拜占庭將軍問題是指,N個將軍去攻打一座城堡,如果大於一定數量的將軍同時進攻則可以攻打成功,如果小於則進攻失敗。將軍中可能存在叛徒。
這個時候有2種情況
1.如果2個叛徒都在BCDE中,那麼共識演算法需要讓其餘2個將軍聽從A的正確決策進攻城堡。
2.如果A是1個叛徒,共識演算法需要讓BCDE中剩餘的3個忠誠將軍保持一致。
這個問題有很多種解法,大家有興趣可以自行查閱(推薦學習PBFT),我們重點來看看以太坊中目前正在使用的Nakamoto 共識和將要使用的 Casper Friendly Finality Gadget共識是如何解決拜占庭將軍問題的。
說到Nakamoto共識和Casper Friendly Finality Gadget共識可能大家不太熟悉,但他們的部分組成應該都比較熟悉-POW(工作量證明)和POS(權益證明)。
POW或POS稱之為Sybil抗性機制,為什麼需要Sybil抗性機制呢,剛剛我們說到拜占庭將軍問題,應該很容易看出惡意節點越多,達成正確共識的難度也就越大,Sybil攻擊就是指1個攻擊者可以偽裝出大量節點來進行攻擊,Sybil抗性是指抵禦這種攻擊能力。
POW通過讓礦工或驗證者投入算力,POS通過讓驗證者質押以太坊,如果攻擊者要偽裝多個節點攻擊則必將投入大量的算力或資產,會導致攻擊成本高於收益。在以太坊中保障的安全性是除非攻擊者拿到整個系統51%算力或資產否則不可能進攻成功。
在解決完Sybil攻擊後,通過選取系統中的最長鏈作為大家達成共識的鏈。
很多人平時為了簡化將pow和pos認為是共識機制,這不夠准確,但也說明了其重要作用,我們接下來分析pow和pos。
通過hash不可逆的特性,要求各個礦工不停地計算出某個值的hash符合某一特徵,比如前多少位是000000,由於這個過程只能依賴不停的試錯計算hash,所以是工作量證明。計算完成後其他節點驗證的值符合hash特徵非常容易驗證。驗證通過則成為成為合法區塊(不一定是共識區塊,需要在最長鏈中)。
以太坊中的挖礦演算法用到2個數據集,1個小數據集cache,1個大數據集DAG。這2個數據集會隨著區塊鏈中區塊增多慢慢變大,初始大小cache為16M DAG為1G。
我們先來看這2個數據集的生成過程
cache生成規則為有1個種子隨機數seed,cache中第1個元素對seed取hash,後面數組中每個元素都是前1個元素取hash獲得。
DAG生成規則為 找到cache中對應的元素後 根據元素中的值計算出下次要尋找的下標,循環256次後獲得cache中最終需要的元素值進行hash計算得到DAG中元素的值。
然後我們再看看礦工如何進行挖礦以及輕節點如何驗證
礦工挖礦的過程為,選擇Nonce值映射到DAG中的1個item,通過item中的值計算出下次要找的下標,循環64次,得到最終item,將item中的值hash計算得到結果,結果和target比較,符合條件
則證明挖到區塊,如果不符合則更換nonce繼續挖礦。礦工在挖礦過程中需要將1G的DAG讀取到內存中。
輕節點驗證過程和礦工挖礦過程基本一致,
將塊頭裡面的Nonce值映射到DAG中的1個item,然後通過cache數組計算出該item的值,通過item中的值計算出下次要找的下標,循環64次,得到最終item,將item中的值hash計算得到結果,結果和target比較,符合條件則驗證通過。輕節點在驗證過程中不需要將1G的DAG讀取到內存中。每次用到DAG的item值都使用cache進行計算。
以太坊為什麼需要這2個不同大小的數組進行輔助hash運算呢,直接進行hash運算會有什麼問題?
如果只是進行重復計算會導致挖礦設備專業化,減少去中心化程度。因為我們日常使用的計算機內存和計算力是都需要的,如果挖礦只需要hash運算,挖礦設備則會設計地擁有超高算力,但對內存可以縮小到很小甚至沒有。所以我們選用1G的大內存增加對內存訪問的頻率,增加挖礦設備對內存訪問需求,從而更接近於我們日常使用的計算機。
我們看看在Nakamoto共識是如何解決拜占庭將軍問題的。首先看看區塊鏈中的拜占庭將軍問題是什麼?
區塊鏈中需要達成一致的是哪條鏈為主鏈,雖然採用了最長鏈原則,但由於分叉問題,還是會帶來拜占庭將軍問題。
本來以太坊pow目標是抵抗51%以下的攻擊,但如上圖如果惡意節點沿著自己挖出的區塊不斷挖礦,由於主鏈上有分叉存在,惡意節點不需要達到51%算力就可以超過主鏈進而成為新的主鏈,為此以太坊使用了ghost協議給上圖中的B1和C1也分配出塊獎勵,盡快合並到主鏈中,這樣主鏈長度(按照合並後的總長度算,長度只是抽象概念,以太坊中按照區塊權重累加)還是大於惡意節點自己挖礦的。
網路中的用戶通過質押一定數量的以太坊成為驗證者。每次系統從這些驗證者從隨機選擇出區塊創建者,其餘驗證者去驗證創建出的區塊是否合法。驗證者會獲得出塊獎勵,沒有被選中的區塊不進行驗證則會被扣除一定質押幣,如果進行錯誤驗證則會被扣除全部質押幣。
如上圖,權益證明在每隔一定區塊的地方設置一個檢查點,對前面的區塊進行驗證,2/3驗證者通過則驗證通過,驗證通過則該區塊所在鏈成為最長合法鏈(不能被回滾)。
我們簡化地只分析了權益證明本身,在以太坊中權益證明較為復雜的點在於和分片機制結合在一起時的運行流程,這部分會在後面單獨將分片機制的一篇文章中詳述。
本篇文章主要討論了共識機制是解決分布式系統中的拜占庭將軍問題,以及分析了以太坊中的共識機制一般包括最長鏈選擇和一種sybil抗性機制(pow或pos)。重點分析了pow和pos的流程以及設計思想。後續將開始重點討論智能合約的部分。
⑻ 為什麼以太坊晶元機啟動那麼慢
開機啟動速度慢,要看速度有多慢了,慢得讓人無法接受的話,一般是因為電腦開機就可以直接上網,病毒大量訪問網路造成電腦的假死,拔掉網線試試就知道了;如果不是那麼慢,只是比以前慢了一些,也就是二三十秒的樣子的話,那是你安裝各種軟體以後,開機自動啟動的軟體太多了,可以刪掉不必要的
⑼ 閃電貸攻擊解讀
如何防範閃貸攻擊?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代幣本身。
誰知道呢?這只是幾行代碼的事。
⑽ 走進以太坊網路
目錄
術語「以太坊節點」是指以某種方式與以太坊網路交互的程序。從簡單的手機錢包應用程序到存儲整個區塊鏈副本的計算機,任何設備均可扮演以太坊節點。
所有節點都以某種方式充當通信點,但以太坊網路中的節點分為多種類型。
與比特幣不同,以太坊找不到任何程序作為參考實施方案。在比特幣生態系統中, 比特幣核心 是主要節點軟體,以太坊黃皮書則提出了一系列獨立(但兼容)的程序。目前最流行的是Geth和Parity。
若要以允許獨立驗證區塊鏈數據的方式連接以太坊網路,則應使用之前提到的軟體運行全節點。
該軟體將從其他節點下載區塊,並驗證其所含交易的正確性。軟體還將運行調用的所有智能合約,確保接收的信息與其他節點相同。如果一切按計劃運行,我們可以認為所有節點設備均存儲相同的區塊鏈副本。
全節點對於以太坊的運行至關重要。如果沒有遍布全球的眾多節點,網路將喪失其抗審查性與去中心化特性。
通過運行全節點,您可以直接為網路的 健康 和安全發展貢獻一份力量。然而,全節點通常需要使用獨立的機器完成運行和維護。對於無法(或單純不願)運行全節點的用戶,輕節點是更好的選擇。
顧名思義,輕節點均為輕量級設備,可顯著降低資源和空間佔用率。手機或筆記本電腦等攜帶型設備均可作為輕節點。然而,降低開銷也要付出代價:輕節點無法完全實現自給自足。它們無法與整條區塊鏈同步,需要全節點提供相關信息。
輕節點備受商戶、服務供應商和用戶的青睞。在不必使用全節點並且運行成本過高的情況下,它們廣泛應用於支收付款。
挖礦節點既可以是全節點客戶端,也可以是輕節點客戶端。「挖礦節點」這個術語的使用方式與比特幣生態系統不同,但依然應用於識別參與者。
如需參與以太坊挖礦,必須使用一些附加硬體。最常見的做法是構建 礦機 。用戶通過礦機將多個GPU(圖形處理器)連接起來,高速計算哈希數據。
礦工可以選擇兩種挖礦方案:單獨挖礦或加入礦池。 單獨挖礦 表示礦工獨自創建區塊。如果成功,則獨享挖礦獎勵。如果加入 礦池 ,眾多礦工的哈希算力會結合起來。出塊速度得以提升,但挖礦獎勵將由眾多礦工共享。
區塊鏈最重要的特性之一就是「開放訪問」。這表明任何人均可運行以太坊節點,並通過驗證交易和區塊強化網路。
與比特幣相似,許多企業都提供即插即用的以太坊節點。如果只想啟動並運行單一節點,這種設備無疑是最佳選擇,缺點是必須為便捷性額外付費。
如前文所述,以太坊中存在眾多不同類型的節點軟體實施方案,例如Geth和Parity。若要運行個人節點,必須掌握所選實施方案的安裝流程。
除非運行名為 歸檔節點 的特殊節點,否則消費級筆記本電腦足以支持以太坊全節點正常運行。不過,最好不要使用日常工作設備,因為節點會嚴重拖慢運行速度。
運行個人節點時,建議設備始終在線。倘若節點離線,再次聯網時可能耗費大量的時間進行同步。因此,最好選擇造價低廉並且易於維護的設備。您甚至可以通過Raspberry Pi運行輕節點。
隨著網路即將過渡到權益證明機制,以太坊挖礦不再是最安全的長期投資方式。過渡成功後,以太坊礦工只能將挖礦設備轉入其他網路或直接變賣。
鑒於過渡尚未完成,參與以太坊挖礦仍需使用特殊硬體(例如GPU或ASIC)。若要獲得可觀收益,則必須定製礦機並尋找電價低廉的礦場。此外,還需創建以太坊錢包並配置相應的挖礦軟體。這一切都會耗費大量的時間和資金。在參與挖礦前,請認真考量自己能否應對各種挑戰。(國內嚴禁挖礦,切勿以身試法)
ProgPow代表 程序化工作量證明 。這是以太坊挖礦演算法Ethash的擴展方案,旨在提升GPU的競爭力,使其超過ASIC。
在比特幣和以太坊社區,抗ASIC多年來一直是飽受爭議的話題。在比特幣網路中,ASIC已經成為主要的挖礦力量。
在以太坊中,ASIC並不是主流,相當一部分礦工仍然使用GPU。然而,隨著越來越多的公司將以太坊ASIC礦機引入市場,這種情況很快就會改變。然而,ASIC到底存在什麼問題呢?
一方面,ASIC明顯削弱網路的去中心化。如果GPU礦工無法盈利,不得不停止挖礦,哈希率最終就會集中在少數礦工手中。此外,ASIC晶元的開發成本相當昂貴,坐擁開發能力與資源的公司屈指可數。這種現狀有可能導致以太坊挖礦產業集中在少數公司手中,形成一定程度的行業壟斷。
自2018年以來,ProgPow的集成一直飽受爭議。有些人認為,它有益於以太坊生態系統的 健康 發展。另一些人則持反對態度,認為它可能導致硬分叉。隨著權益證明機制的到來,ProgPoW能否應用於網路仍然有待觀察。
以太坊與比特幣是一樣,均為開源平台。所有人都可以參與協議開發,或基於協議構建應用程序。事實上,以太坊也是區塊鏈領域目前最大的開發者社區。
Andreas Antonopoulos和Gavin Wood出品的 Mastering Ethereum ,以及Ethereum.org推出的 開發者資源 等都是新晉開發者理想的入門之選。
智能合約的概念於20世紀90年代首次提出。其在區塊鏈中的應用帶來了一系列全新挑戰。2014年由Gavin Wood提出的Solidity已經成為開發以太坊智能合約的主要編程語言,其語法與Java、JavaScript以及C++類似。
從本質上講,使用Solidity語言,開發者可以編寫在分解後可由以太坊虛擬機(EVM)解析的指令。您可以通過Solidity GitHub詳細了解其工作原理。
其實,Solidity語言並非以太坊開發者的唯一選擇。Vyper也是一種熱門的開發語言,其語法更接近Python。