比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > Polygon > Info

EST:觀點:務實地取消 SELFDESTRUCT

Author:

Time:1900/1/1 0:00:00

本文將介紹?SELFDESTRUCT?對以太坊生態弊大于利的一些理由,正是因為這些理由,我們應該以某種方式移除?SELFDESTRUCT?。鑒于有些合約已經使用了?SELFDESTRUCT?,我提出了一些只需要付出最小的代價就能消除?SELFDESTRUCT?危害的方法。

一段歷史:?SELFDESTRUCT?已經沒有必要了

SELFDESTRUCT?早在以太坊的極早期便已引入。實際上,它在2013年12月發布的以太坊協議“規范”預告中就已經出現了。那時候,幾乎沒人仔細考慮過狀態規模管理的長遠問題。但是,有個想法我大概還有些印象,為了防止沒用的垃圾狀態不受限制地膨脹,我們需要讓任何創建出來的對象都可以被銷毀。具體的思路是,當外部賬戶的余額為零時觸發自毀,而合約在沒用后可以調用代碼里的一行自毀語句觸發自毀。還有一個gas退款機制用于激勵大家銷毀沒用的狀態。

2014年1月,AndrewMiller指出了一個非常嚴重的問題:在2013年12月的規范設計中,EOA很容易被重放攻擊。如果我有100個幣,我通過一筆交易發給你10個幣,你可以簡單地在鏈上重放這筆交易十次,從而轉走我的全部余額。這個問題很快就修復了,為此我們增加了nonce字段。然而,nonce字段的引入讓刪除EOA的愿望徹底破滅了:nonce是不能被重置為零的一旦該賬戶被再次使用,nonce又要從零開始,就會被重放攻擊)。

觀點:FTX崩盤可能導致人們傾向于將資產轉移到個人錢包中:金色財經報道,歐盟議會關于FTX倒閉和對歐盟影響的聽證會正在進行。ESMA風險分析與經濟學主管Steffen Kern表示,我們目前沒有看到金融溢出到更廣泛金融部門的重大風險。相互聯系相對有限,而且該部門總體上仍然相對較小。

DG FISMA副主任Jour-Schroeder則表示,FTX 發生的事情可能導致人們傾向于將資產轉移到個人錢包中,而不是將其存放在交易所,從而引發不同類型的風險。[2022/11/30 21:12:49]

2015年,有人提出了一些方案試圖繞過這個問題,使余額為零的賬戶可以被安全地刪除。然而,當時很明顯,幾乎沒有合約開發者真正使用自毀功能:因為要弄清楚什么時候自毀太難了,而獎勵也太少了。

到2019-21年,事情已經變得很明顯了,我們需要的是其他形式的狀態管理,比如租金機制或者是長期未動的狀態“到期作廢””)。而如果我們采用這兩個方案中的任何一個,只要它是有效的,那么合約是否有能力主動刪除自己就一點兒也不重要了。

律師觀點:針對SEC訴Ripple一案,雙方達成和解是最有可能的結果:美國奧蘭多Hogan & Hogan律師事務所的律師Jeremy Hogan在一段YouTube視頻中講述了美國SEC起訴Ripple一案最有可能出現的情況。他就表示,根據美國法律,XRP作為一種證券的評估永遠不會有一個籠統的“決定”。這位律師認為,這正是我們在銷售XRP時看到的情況。隨著XRP的用例越來越多,XRP分類賬也越來越去中心化,XRP成為證券的可能性也越來越小。

和前SEC委員Joseph Grundfest一樣,Hogan也質疑SEC對Ripple采取行動的“真正動機”。他同意Ripple首席執行官Brad Garlinghouse的觀點,認為這起訴訟背后可能會對整個加密行業造成“攻擊”。此外,Hogan樂觀地認為XRP不會被列為證券。美國SEC“沒有要求法院聲明XRP是一種“證券”,盡管他們可以這樣做。此外,正如SEC之前的訴訟所顯示的那樣,Ripple與SEC達成和解是最有可能的結果。(Crypto News Flash)[2021/1/24 13:21:37]

SELFDESTRUCT?是唯一一個破壞重要恒常性質的操作碼

觀點:包括閃電網絡在內的調整將擴大比特幣全球經濟份額:cypherpunk記者Janine Roemer表示,要想保證良好的隱私,Lightning網絡需要的不僅僅是洋蔥路由,Lightning是眾多調整之一,這些調整將擴大比特幣在全球經濟中占據越來越大份額的能力。她稱,我希望比特幣將成為在逆境中能夠生存的東西,并為使用它的人們提供足夠的私密性。(Coindesk)[2020/7/12]

SELFDESTRUCT?不僅沒什么用,還會產生危害。它破壞了一些重要的恒常性質,這些性質本來是很好的,但是僅僅因為這一個操作碼,我們就失去了這些性質。

SELFDESTRUCT?是唯一一個能在單個區塊中變更無限個狀態對象的操作碼

其他所有的操作碼都只能操作賬戶中的單個值或者存儲樹上的單個key,所以它們能變更多少固定大小的對象是有限制的。但是,SELFDESTRUCT可以刪除整棵存儲樹。

在目前的狀態樹結構中,這是可以容忍的。但是,考慮一種特殊的情況:當調用SELFDESTRUCT刪除許多存儲插槽后,下一個事務又在同一個地址上創建一個合約并訪問同一些存儲槽。為了處理這種情況,需要額外設計復雜的緩存機制。此外,SELFDESTRUCT還阻礙了我們變更狀態存儲格式。

觀點:比特幣市值占比或將暴跌,另一個山寨幣季節可能即將到來:加密貨幣交易員Scott Melker在最近的推文中稱,比特幣的主導地位“懸在懸崖邊上”,如果它崩潰了,可能標志著另一個山寨幣季節的開始。根據CoinStats數據,比特幣的市值占比目前為64.5%。與5月中旬相比,該數據已下跌近2.5%,Melker公布的圖表顯示,該數據正處于重大崩潰的邊緣。

比特幣的主導地位目前比去年9月2日的73.1%下降近10%。由于以太坊在2020年初的強勁表現,比特幣的主導地位在1月6日跌至70%以下,并且沒有成功地恢復到這一水平。5月份,許多中等規模的山寨幣以及Cardano(ADA)表現很好,后者是第十大加密貨幣,市值超過21億美元,在一周內(從5月28日到6月4日)上漲65.6%。2018年1月,比特幣的主導地位跌至33%的歷史低點,當時投資者在大規模投機性加密泡沫的高峰期向山寨幣投資。(U.Today)[2020/6/18]

以SELFDESTRUCT會阻礙的兩類狀態存儲格式為例:

任意的“單層”方案

觀點:隨著BCH、BSV減半,兩者算力將開始轉向BTC:Dragon Industries的Arthur van Pelt在推特上表示,比特幣目前占據了93.8%的算力。當BCH的區塊獎勵減半至6.25 BCH時,它只擁有總算力的1.5%。隨著BSV亦將減半,其目前2.7%的算力占比可能會進一步下降。這是一個可以預測的場景。比特幣目前的價格甚至還達不到Antminer S9等許多老礦機的盈虧平衡點。Poolin(幣印)礦池副總裁Alejandro de la Torre對此表示,BCH礦工與BTC、BSV礦工使用相同的算法,因此礦機也通用。BCH算力下降了一半,BTC的算力上升了(BSV算力的上升幅度幾乎可以忽略不計),這表明礦工已經轉向比特幣,因為開采比特幣更有利可圖。(Bitcoinist)[2020/4/9]

存儲槽可以存儲在一些地址“附近”,而不是存儲在合約里的方案有用,比如在ERC20轉賬或Uniswap交易的場景下)

請注意,這不是在空想,從根本上變更狀態存儲格式的討論已經開始了,如果狀態存儲的數據結構能夠接近單一的的鍵/值存儲結構,并且單個區塊中可以變更的狀態數量有一個較低的上限,那將大大擴展我們的選擇空間。

SELFDESTRUCT?是唯一一個會導致合約代碼變動的操作碼

如果在一個特定的地址上存儲了一段代碼,那么這段代碼就會永遠保留在鏈上。這樣的恒常性質是有用的,因為在構建應用時不需要擔心這些代碼會出現變動。

賬戶抽象化非常依賴該恒常性質用以支持庫調用。因為代碼存在變動的可能,還會導致應用的安全性變得復雜很多:2017年Parity的多簽錢包就曾因為其引用的庫代碼合約被偶然刪除而徹底癱瘓。

而唯一破壞代碼不變性的操作碼就是?SELFDESTRUCT?。

SELFDESTRUCT?是唯一一個可以未經賬戶同意就能修改賬戶余額的操作碼

SELFDESTRUCT?有一個內置的“轉賬”的功能,其并不走正常的轉賬流程,因而可以繞過避免合約地址接收Ether的守護功能,以及對轉賬事件的日志記錄。這為智能合約錢包埋下了隱患,讓一些潛在有用的技巧沒法使用,加重了開發者和審計者的心智負擔。

SELFDESTRUCT?當前的用例

如今?SELFDESTRUCT?有兩類重要的應用:

GasToken:當gas價格低時通過創建合約用掉gas,當gas價格高時通過調用?SELFDESTRUCT?獲得gas退款。

利用SELFDESTRUCT實現代碼的動態變更:這可用于dApp或DAO及其他類似用例的“升級”。

可以被安全地銷毀。GasToken的開發者已經發出了警告“雖然對以太坊網絡的變更會導致GasToken無法使用、不可贖回、不能互換以及/或毫無價值,但是GasToken的開發者極可能會擁護該變更”。移除selfdestruct退款只會導致有些操作的費用變得更貴。

從長遠來看,是沒必要的,還有其他一些被廣泛使用的范式可用于支持動態代碼變更。最容易實現的是?DELEGATECALL?轉發器,合約從一個存儲插槽中獲取一個代碼地址,然后調用對應地址的代碼;修改這個存儲插槽就能更新代碼。不過,從短期來看,有少數應用已經使用了。

提案1:完全移除?SELFDESTRUCT

從某個區塊開始,完全停用?SELFDESTRUCT?。在這個及之后的區塊里,如果EVM在執行時遇到?0xff?操作碼,只要拋出異常直接退出即可,就像EVM執行時遇到不存在的操作碼一樣。

在完全停用前,為了警示用戶避免使用?SELFDESTRUCT?,我們可以漸進式地增加其gas費用:如果?block.number10**6>=FLAG_BLOCK?,則?SELFDESTRUCT?的gas費用增加到?10**10//(FLAG_BLOCK-block.number)?。

提案2:閹割?SELFDESTRUCT

我們也可以保留這個操作碼,但是改變其行為,一方面消除其對狀態樹的破壞,另一方面增加一個新特性,讓合約可以標識為不可自毀,從而確保代碼不可變。

暫時提議新增的行為包括:

當一個合約調用?SELFDESTRUCT?時,并不會刪除合約賬戶,而是清空代碼,并且將nonce值增加?2**40?。沒有退款。

通過調用將合約中的ETH轉移到目標地址。

可以在代碼為空的地址上創建合約。

在合約里調用?SSTORE?和?SLOAD?操作地址?A?時,實際操作的是?A_offset=(AA.nonce//2**40)%2**160?的存儲樹。

注意,從EIP-2929的角度來看,?A_offset?需要“可達”。如果該賬戶不在可達賬戶集合中,則需要額外支付2600gas以加入可達集合。

另一種選擇是調整將storagekey轉換為treekey的哈希函數,用?sha3(storage_keycontract_nonce//2**40)?代替?sha3(storage_key)?。需要注意的是,無論如何都需要做一些類似的調整,以方便合約級別的無狀態key空間擴展。

合約可以在代碼中指定?0xA8?作為第一個字節,EVM會將其識別為無操作,但使用它來開啟一個標志,在執行過程中完全禁用?SELFDESTRUCT?的功能。

這兩種解決方案也可以結合起來:當前立即閹割,將來完全移除。或者,這個操作碼也可以永遠不被完全移除,但是最終只保留一個功能,即向目標地址發送合約當前的全部ETH余額,我們可以將這個操作碼重命名為?CLEAR?。

原文鏈接:

https://hackmd.io/@HWeNw8hNRimMm2m2GH56Cw/selfdestruct

作者:??Vitalik

翻譯&校對:戡亂&?阿劍

Tags:ESTDESSTRSELFRamesttadeso幣今日價格Astra DAOSELF幣

Polygon
ARB:關于質押借幣提升USDT可借額度的公告

尊敬的用戶: 為響應用戶需求,質押借幣已提升USDT可借額度,詳情如下:?借入幣種USDT借入額度100萬-2000萬100萬-700萬100萬-400萬質押幣種BTCETHHT初始質押率65%.

1900/1/1 0:00:00
比特幣:比特幣價格劇烈波動,主力開始換套路了,坐穩扶好

一夜之間,冰火兩重天,昨夜又是一個非常刺激的夜晚,幣友們集體體驗心跳加速的感覺,昨晚23點左右,比特幣突然一根陽線拉起,幣價直接從57800美元一路漲至6萬以上,漲幅達到3%.

1900/1/1 0:00:00
智能鏈:虎符合約分享有禮 ,曬盈利瓜分20,000 USDT

尊敬的虎符用戶: 為回饋廣大用戶對虎符合約一直以來的支持,現推出虎符合約分享盈利贏20000萬USDT贈金活動.

1900/1/1 0:00:00
比特幣:比特獵手:橫盤休整是假,暗度陳倉是真 區間震蕩不會太久

當被現實按在地上收拾的時候,記得心要平靜,眼要發光。唯有悲觀凈化而成的樂觀,才是真正的樂觀。別著急擁抱,也別著急逃跑,先認清市場的形狀,咖啡苦與甜,不在于怎么攪拌,而在于是否放糖,一波行情,不在.

1900/1/1 0:00:00
KEY:SmartKey (SKEY)上線慶典:參與交易競賽,瓜分65,000 SKEY,連接區塊鏈和我們的現實世界!

為了慶祝SmartKey(SKEY)在庫幣重磅上線,庫幣和SKEY團隊將提供65,000SKEY豪華大獎池.

1900/1/1 0:00:00
FIL:Filecoin扇區到期能續費嗎?

扇區是Filecoin上存儲的基本單位。它們具有標準大小,以及明確的承諾時間增量。一個扇區的生命周期由存儲市場決定,并確定該扇區的承諾持續時間.

1900/1/1 0:00:00
ads