以太坊網絡現在有24,270種代幣,27,358筆交易等待轉賬,463,713個電子貓。
以太坊最近主持了很多活動,很多加密貨幣的愛好者認為這是個積極的信號,因為以太坊網絡的使用率大增,歷史更加長遠並且以太坊區塊鏈技術變得更加有前景。雖然以太坊網絡的擁堵導致了轉賬積壓,不斷增加的轉賬費用也引起了大眾的在意,但是以太坊這樣大的規模也造成了另一個問題,逐漸增加的數據庫使得用戶運行全節點需要花費非常昂貴的存儲費用。
這個數據庫就是以太坊狀態,裡面含有需要計算機記憶的所有計算,從而可以支持以太坊平台和以太坊區塊鏈本身運行。隨著儲存這些狀態的時間和金錢逐漸增加,越來越少的人會選擇運行全節點,如此很多人會擔心這會導致以太坊網絡中心化,只被少數的仲裁者所掌握。
其實開發人員發現了這個問題。
一方面,以太坊的開發人員正在進行對工程協議級別的更新,例如分片技術,旨在最小化數據化。
但是由於這些技術仍然在開發中,但是使用以太坊客戶端(可以讓用戶和區塊鏈通信的軟件)的用戶面對數據庫的增長已經非常有壓力了。
“但是事實上自從2016年下半年,我們就知道要提高以太坊這方面的性能是至關重要的,這半年到一年多,有非常多的想法冒出來。但是有誰真正地實施了呢?”以太坊創始人Vitalik Buterin最近在一個程序開發者頻道說道。
“按照現在的增長速度預測,以太坊數據庫在今年會飛速增長,如果達到某個臨界點,小的設備會很難進行對數據的管理。”
為了盡可能減少冗大的數據庫的影響,兩個最著名的以太坊客戶端- Geth和Parity最近也發出了軟件更新嘗試改善這種情況。
Parity上週發出的第一個更新,通過去除由軟件記憶下的不必要的,暫時的文件歷史文件來減少儲存方面的需求。
通過極大地減少儲存需求,用戶可以更容易地運行全節點然後體驗到更快的同步時間。Parity還說通過這種技術,可以讓以太坊軟件在硬盤而不是固態硬盤上運行,這是一個非凡的成就因為過長的同步時間導致以太坊在去年夏天的時候就不能在硬盤上運行了。
這次更新甚至獲得了V神很興奮的回复,他在一個開發人員頻道說道:“哇,你們是怎麼完成這個的?”
由於這次更新,用戶反饋說極大地提升了使用體驗。
同時,獨立的開發人員Alexey Akhunov正在對geth客戶端進行更新,並稱之為“渦輪增壓版的geth ”。根據Akhunov敘述這個版本是一個“妄想“,這個項目旨在移除很多現有以太坊客戶端在整個狀態網絡處理過程中有的不必要的重複。
雖然這個項目離完成還差很遠,但是這帶來了一些有趣的“投機優化“的辦法,Akhunov在最近的一次開發者聊天時說到。
例如,Akhunov建議將關於以太坊狀態的一些信息“硬編碼“到客戶端中。最終,目標是適應這個軟件從而可以容易地運行隨機的進入存儲器,或者RAM,這樣做會使得客戶端變得更快– 使得他們能夠和網絡進行及時同步。
Geth自己的開發人員也在就優化而工作,其中有一個人在嘗試糾正當客戶端使用“快速”模式同步整個網絡的時候所使用的信息儲存方法。根據Geth的首席開發人員Péter Szilágyi所說,這是“真正地恐怖”,現有的代碼會有一大堆的更新,使得更新更加快速,而且不會對存儲空間那麼敏感。
同時還有對一種叫做“無狀態客戶端“的客戶端類型進行研究,這種客戶端只儲存整個狀態網絡的壓縮形式。
甚至V神對這個觀點也很有興趣,最近在進行一項研究來描述一個場景,“總地來說,礦工和全節點再也不需要儲存任何狀態。” 而且,v神之後在一個開發者頻道說,無狀態的客戶端也會緩解通過其他方法清除狀態的需要,例如截距舊的不相關的數據,例如,空的或者是長期沒有激活的賬戶。
“我現在讚成這種無狀態客戶端的方案,” V神說到。
無狀態客戶端甚至有可能可以不做出底層協議級的改進。
使用類似這種客戶端作為可能的方案來解決在電子貓成功後所遇到的以太坊擴容困境,Akhunov在近期的博客裡面寫道:“我相信(無狀態客戶端)現在已經可以實施,不需要任何的硬分叉,只需要簡單地改變下以太坊的客戶端。。。這意味著節點不需要從文件中進入存儲,區塊驗證的時間應該會大幅度地降低。”
但是,客戶端優化也不能成為以太坊網絡唯一可以依賴的東西來當作解決方案。
根據Szilágyi所說,最終客戶端的優化會達到極限。然後開發者就必須要將注意力轉移到技術的發展,例如分片技術,將以太坊數據庫分成更小的塊儲存在不同的節點,這樣可以避免在單個客戶端存儲整個數據庫的巨大壓力。
也許是為了回應現有網絡存在的壓力,分片技術的發展在最近幾個月加快了,現在已經在Github網站上有一個早期的雛型。
“我們可以優化數據庫,讓它比之前快10倍,而且更加的優化,這就給了我們空間去發展成10倍規模,”Szilágyi說到,“但是最終,我們會再也不能優化數據庫了,那個時候我們需要具備可以分片我們數據的能力。”