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

以太坊:以太坊技術 | Solidity 函數修改器以及異常處理

Author:

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

鏈聞ChainNews:

Solidity是以太坊上最主流的函數修改器。本篇文章從技術角度展示了如何針對異常情況在代碼層面進行詳細分析,最后總結出異常情況最易出現的一些場景,并給出相對應的建議。

來源|矩陣數字經濟智庫作者|閆鶯等

函數修改器

Solidity提供了一個函數修改器的特性。函數修改器與Python中的裝飾器類似,可以在一定程度上改變函數的行為,比如可以自動在函數執行前檢查參數是否合法。函數修改器是可以被繼承的,同時可以被派生類覆蓋重寫。

下面代碼展示了如何聲明并使用函數修改器。

contractowned{functionowned(){owner=msg

以太坊鏈上MEV bot遭受攻擊,攻擊者已盜取約115ETH:金色財經報道,據區塊鏈安全審計公司Beosin旗下Beosin EagleEye安全風險監控、預警與阻斷平臺監測顯示,以太坊鏈上MEV bot 遭受攻擊,攻擊者(0x9e189A200E7e6b72a8fA9cCFbA8C800B01Bff520)使用同DubaiCEO代幣相同的合約,該合約存在refund和burnFromAddresses后門函數,其攻擊者通過銷毀MEV bot的token,使MEVbot只能買入而無法賣出。目前,攻擊者(0x9e189A200E7e6b72a8fA9cCFbA8C800B01Bff520)利用后門已盜取MEVbot約115ETH(價值22.5W美元)[2023/7/4 22:17:13]

addressowner;//這個合約定義了一個在派生合約中使用的函數修改器//";"指代被修改函數的函數體。//當這個函數執行前,先檢查msg

以太坊客戶端Erigon發布V2021.09.03-alpha版本:9月16日消息,以太坊客戶端Erigon發布V2021.09.03-alpha版本,包括交易池改進等更新。[2021/9/16 23:30:03]

}contractContractisowned{//從owned合約繼承了onlyOwner函數修改器并且將其作用于close函數//確保了這個函數只有在調用者為合約創建者時才會生效functionclose()onlyOwner{selfdestruct(owner);}}

下面代碼進一步展示了函數修改器是如何接收參數的,函數修改器的參數可以是上下文中存在的任意變量組成的表達式。

contractpriced{//函數修改器可以接收參數modifiercosts(uintprice){if(msg

以太坊未確認交易為189,312筆:金色財經消息,據OKLink數據顯示,以太坊未確認交易189,312筆,當前全網算力為620.14TH/s,全網難度為8.29P,當前持幣地址為61,830,533個,同比增加115,915個,24h鏈上交易量為0.0ETH,當前平均出塊時間為13s。[2021/9/1 22:53:18]

}}contractRegisterispriced,owned{mapping(address=>bool)registeredAddresses;uintprice;functionRegister(uintinitialPrice){price=initialPrice;}//這里需要payable修飾詞,否則無法通過該方法轉賬以太幣//函數修飾器costs接收參數price//使用costs修飾器確保registe函數在msg

開發人員:以太坊2.0存款合約將于本周推出:ETH 2.0開發人員Ben Edgington表示,以太坊2.0存款合約將在本周發布。據悉,存款合約允許ETH在以太坊和以太坊2.0之間發送,是促進以太坊2.0階段0推出所需的少量剩余更新之一。此前消息,Edgington透露信標鏈的“創世”或將在6-8周后推出。(cointelegraph)[2020/10/20]

functionchangePrice(uint_price)onlyOwner{price=price;}}

下面的例子展示了如何使用函數修改器實現一個重入鎖機制。

contractMutex{boollocked;modifiernoReentrancy(){require(!locked);locked=true;;locked=false;}//這個函數使用了noReentrancy修改器,這保證了在f函數內部無法再次調用f函數//在執行return7時也執行了函數修改器中的locked=false語句functionf()noReentrancyreturns(uint){require(msg

以太坊未確認交易64608筆:金色財經報道,Etherscan數據顯示,當前以太坊未確認交易64608筆。當前挖礦難度2151.07TH,交易處理能力10.1TPS。截至目前以太坊全球均價為115.84美元,最近24小時下跌1.36%。[2020/3/18]

}異常處理以太坊使用狀態回退機制處理異常。如果發生了異常,當前消息調用和子消息調用產生的所有狀態變化都將被撤銷并且返回調用者一個報錯信號。Solidity語言提供了兩個方便的函數assert和require來檢查條件,并且當條件不滿足的時候拋出一個異常。assert函數通常用于檢查變量和內部錯誤,require函數用于確保程序執行的必要條件是成立的。一個正常運行的程序不應該遇到assert和require失敗,否則程序代碼中一定存在需要修復的問題。revert函數和throw關鍵詞會標識發生了錯誤并且回退當前的消息調用產生的狀態改變。當前調用收到子消息調用產生的異常時會自動拋出,所以異常會一層層上浮直到最上層的根調用,代碼會立刻終止執行并回退狀態改變。但是,

}

一個assert類型的異常會在下述場景拋出:

訪問數組越界,下標為負數或者超出長度。訪問固定長度的bytesN越界,下標為負數或者超出長度。對0做除法或者對0取模,比如5/0,5%0。移位操作使用了一個負數做操作數。轉換一個特別大的數或者負數到枚舉類型變量。使用移位操作時給一個負數值。使用枚舉時將過大值或賦值轉為枚舉類型變量。調用assert函數并且參數值為false。一個require類型的異常會在下述場景拋出:

調用throw。調用require并且參數值為false。發起一個消息調用,但是這個調用沒有正常完成,比如Gas耗盡、被調用函數不存在或者函數本身拋出一個異常。使用new創建一個合約,但是和3中提到的原因一樣構造函數沒有正常完成。調用外部函數時指向一個不包含代碼的地址。合約通過一個沒有payable修辭詞的函數接收以太幣,包括構造函數和fallback函數。合約通過一個公開的訪問函數接收以太幣。.transfer()失敗。在require類型的異常發生時會執行回退操作,對于一個assert類型的異常執行一個無效操作。在這兩種情況下,以太坊虛擬機都會撤銷所有的狀態改變。這樣做是因為發生了意料之外的情況,交易無法安全執行下去,為了保證交易的原子性,最安全的操作就是撤銷該交易對狀態造成的影響。

在編寫合約代碼時,我們需要合理使用assert和require來保證代碼能夠按我們預期的設計進行。

更多精彩內容,關注鏈聞ChainNews公眾號,或者來微博**@鏈聞ChainNews**與我們互動!轉載請注明版權和原文鏈接!

來源鏈接:mp.weixin.qq.com

本文來源于非小號媒體平臺:

鏈聞研究院

現已在非小號資訊平臺發布1篇作品,

非小號開放平臺歡迎幣圈作者入駐

入駐指南:

/apply_guide/

本文網址:

/news/3626956.html

以太坊ETH

免責聲明:

1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險

2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場

上一篇:

文摘|Schnorr簽名:比特幣的最新升級

Tags:以太坊ICEPRIRICE以太坊最新價格行情走勢圖JUSTICE價格Privilegerice幣官網

Fil
ARB:「幣圈楊超越」?8 大套路帶你看清傳銷幣真相!

「站在風口上,豬都能飛起來。」雷軍曾說的這句話激勵了不少年輕人去踏上新技術的風口,數字貨幣就是其中之一,而一些不法分子利用很多人對于幣圈暴富神話的向往編造一個又一個的幣圈騙局,吸引韭菜入套.

1900/1/1 0:00:00
ARK:Tark錢包面向全球招募優秀上幣方,千億財富等你來拿!

Tark錢包全球首創雙形態冷錢包安全防護模式,技術上實現重大突破,應用上充分體現區塊鏈精神。Tark錢包兩大超級特色,六大優勢具備匿名性和安全性兩大超級特色,多幣種、秒速、多帳戶系統、離線簽名、.

1900/1/1 0:00:00
加密貨幣:俄羅斯國家杜馬高級官員:加密貨幣有可能毀掉政府

據俄羅斯當地金融媒體機構Rambler報道,俄羅斯國家杜馬(議會下院)的一名高級官員認為,加密貨幣有可能毀掉政府.

1900/1/1 0:00:00
區塊鏈:獵聘報告:僅次于電競 區塊鏈行業平均年薪為26.02萬元

近日,獵聘發布《2019年中國電競行業中高端人才吸引力報告》。根據獵聘大數據顯示,2018年1月-2019年4月電競行業中高端人才平均年薪為29.02萬元,遠高于全行業平均年薪(20.22萬元).

1900/1/1 0:00:00
BIT:公告中心丨永續合約招募體驗官

永續合約招募體驗官 尊敬的BITKER用戶:BITKER合約交易即將上線,一款有“保險絲”的永續合約,值得期待!公告 | ARPA主網瀏覽器正式上線 主網已執行超過10.

1900/1/1 0:00:00
YSR:5月22日 | 小蔥隔夜消息一覽

1.澳本聰提交原始比特幣白皮書美國版權注冊申請,分析稱注冊并意味者所有權。或受此消息影響,昨晚BSV短時爆拉,最高觸及195USDT,現回落至100USDT附近.

1900/1/1 0:00:00
ads