譯文出自:登鏈翻譯計劃
譯者:翻譯小組
校對:Tiny熊
你可能認為在ERC-20調用幾個函數非常簡單,對嗎?很不幸,不是的。有些事情我們必須要考慮,而且還可能出現一些很常見的問題。
我們從最簡單的開始,下面我們要處理一個非常普通的token交易,下面的代碼會導入并直接使用IERC20
對于像DAI這樣的token來說這段代碼是很完美的,調用transfer函數并在出錯的時候回退調用。
但是,如果我們調用的是0x會發生什么?ZRX代碼在這里。
functiontransferFrom(address_from,address_to,uint_value)returns(bool){if(balances>=_value&&allowed>=_value&&balances_value>=balances){balances=_value;balances-=_value;allowed-=_value;Transfer(_from,_to,_value);returntrue;}else{returnfalse;}}
比特幣倡導者:硬件錢包是穩健且安全的加密貨幣托管形式:5月25日消息,在最近的播客中,比特幣倡導者Andreas Antonopoulos表示,硬件錢包比許多其他的SMS好得多,安全得多。硬件錢包是一種消費級的HSM,它更穩健,如果HSM配置不當,安全性就會受到影響。大多數HSM甚至不太了解交易,很容易被黑客愚弄。硬件錢包的設計就是為了防止這些攻擊。但冷錢包制造商之一Ledger最近發布的一項研究表明,加密貨幣冷錢包也容易受到黑客的攻擊。然而,該報告進一步指出,目前,硬件錢包是用戶存儲其加密資產的唯一安全選擇。(AMBcrypto)[2020/5/25]
我們可以看到,與DAI不同,當出錯時0x不會回退交易,而是返回false,但是我們在代碼中不管這個返回值。本質上,任何人都可以與我們合約的interactWithToken交易,合約會認為成功交易了一個token,但實際上什么也沒有做。很糟糕!
ZRX仍然符合ERC-20標準,因為沒有任何地方規定ERC-20合約必須在發生失敗時回退交易。這兩種方法都有優點和缺點。在上面的例子中,很明顯我們只需要檢查返回值就知道是否成功,一段簡單的代碼require(token
聲音 | 馬云:區塊鏈技術是來保護用戶的隱私和數據安全的:當地時間11月7日,在烏克蘭的哈爾科夫國立大學,馬云提到了數字化階段和區塊鏈技術,表示未來只分數字化和非數字化國家,區塊鏈技術越來越重要,可以解決隱私和安全問題。在未來區塊鏈技術或許會解決很多問題,我們國家已經開發了很多年;我相信這項技術不是讓你賺更多錢,而是來保護你的隱私和數據安全的。[2019/11/10]
catchError(stringmemory/*reason*/){success=false;//specialhandlingdependingonerrormessagepossible}catch(bytesmemory/*lowLevelData*/){success=false;}if(success){//handlesuccesscase}else{//handlefailurecasewithoutreverting}}
這樣你就可以為兩個版本的ERC-20合約做錯誤處理。
怎樣支持所有token
聲音 | PeckShield創始人:相對中心化交易所,去中心化交易所是一個更安全的選擇:PeckShield創始人兼CEO蔣旭憲博士表示,攻擊者都是追求利益回報的。中心化交易所持有幣的數量和價值,都遠遠大于去中心化交易所。攻擊者在選取攻擊目標的時候,當然會盯著價值更大的一方。另外,去中心化交易所的資產由合約掌管,而且大多數是開源的,也有助于全世界的程序員幫你審核項目有沒有漏洞。整個交易流程的公開透明也使其出問題的概率降低。所以相對而言,去中心化交易所是一個更安全的選擇。[2019/5/15]
現在你已經支持了ERC-20標準的token,然而有相當多的token看起來像ERC-20,但是它的有些行為卻不像,有些出現缺少返回值的錯誤。
有一段時間,OpenZeppelin有一個bug,他們在失敗的時候回退交易,但沒有在成功時返回true。這個bug讓很多token都受到了影響,包括USDT、OmiseGo和BNB。你期望返回一個布爾值,卻沒有任何值返回,這種情況,如果用Solidity0
現場| 陳鐘:區塊鏈數據安全的問題要轉成主權的問題來解決:金色財經12月17日現場報道,今日,由數字資產研究院主辦,零壹財經和石榴財經承辦的2018國際區塊鏈數學科學會議在京舉行。計算機科學家、北京大學信息科學技術學院區塊鏈研究中心陳鐘以“區塊鏈安全——數學的尷尬與無奈”為主題作了報告。在會上,陳鐘發出了“區塊鏈安全嗎”之問。他表示,目前,交易易所被盜排在區塊鏈安全事件之首。“區塊鏈里面對黑客的攻擊來自方方面面。”陳鐘強調,“數據安全的問題要轉成數據主權的問題來解決。”[2018/12/17]
其先檢查返回數據的大小,如果是0,我們就假定它是行為不正常的token。如果調用沒有回退交易,那就意味著交易成功了,應該返回true。
隨著Solidity的版本更新,我們可以簡化這段代碼,像Uniswap是這樣做的:
functionsafeTransfer(addresstoken,addressto,uintvalue)internal{//bytes4(keccak256(bytes('transfer(address,uint256)')));(boolsuccess,bytesmemorydata)=token
聲音 | 永輝劉中濤:區塊鏈技術已成為永輝預防食品安全的重要舉措:據中江網消息,近日,在以“實施食品安全戰略推進健康中國建設”為主題的第十六屆中國食品安全年會上,永輝云商彩食鮮聯合創始人劉中濤發表了公開講話,介紹了永輝旗下自有品牌的食品安全保障措施,他表示:“在后端,永輝積極布局區塊鏈、物聯網、AI、云計算、大數據等領域,運用前沿科學技術賦能食品安全。以永輝近期上線的區塊鏈溯源系統為例,通過區塊鏈溯源系統可清晰查看生鮮產品的所有信息,并通過大數據人工智能分析生鮮食品溯源信息,實現風險預警及問題追蹤。區塊鏈技術已經成為永輝預防食品安全的重要舉措。”[2018/11/21]
這種實現方法只是稍有不同而已,因為abi
你應該怎么做?
那么,現在最好的方法是什么呢?一個很簡單的方法就是,使用OpenZeppelinSafeERC20來實現。
這是一個圍繞ERC-20調用的包裝庫。不要感到困惑,這不是為了創建自己的token,而是為了安全地交易。SafeERC20的實現基本上就是像上面的Uniswap版本一樣,你可以像下面這樣用它:
import"https://github
}
本翻譯由CellNetwork贊助支持。
來源:https://soliditydeveloper.com/safe-erc20
參考資料
登鏈翻譯計劃:https://github.com/lbc-team/Pioneer
翻譯小組:https://learnblockchain.cn/people/412
Tiny熊:https://learnblockchain.cn/people/15
DAI:https://etherscan.io/address/0x6b175474e89094c44da98b954eedeac495271d0f#code
這里:https://etherscan.io/address/0xe41d2489571d322189246dafa5ebde1f4699f498#code
代碼:https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/ERC20.sol
try/catch:https://solidity.readthedocs.io/en/latest/control-structures.html#try-catch
缺少返回值的錯誤:https://medium.com/coinmonks/missing-return-value-bug-at-least-130-tokens-affected-d67bf08521ca
影響到了Uniswap:https://twitter.com/UniswapProtocol/status/1072286773554876416
Compound版本:https://github.com/compound-finance/compound-money-market/blob/241541a62d0611118fb4e7eb324ac0f84bb58c48/contracts/SafeToken.sol#L97
Uniswap是這樣做的:https://github.com/Uniswap/uniswap-lib/blob/9642a0705fdaf36b477354a4167a8cd765250860/contracts/libraries/TransferHelper.sol#L13-L17
OpenZeppelinSafeERC20:https://docs.openzeppelin.com/contracts/3.x/api/token/erc20#SafeERC20
CellNetwork:https://www.cellnetwork.io/?utm_souce=learnblockchain
免責聲明:作為區塊鏈信息平臺,本站所發布文章僅代表作者個人觀點,與鏈聞ChainNews立場無關。文章內的信息、意見等均僅供參考,并非作為或被視為實際投資建議。
本文來源于非小號媒體平臺:
登鏈社區
現已在非小號資訊平臺發布105篇作品,
非小號開放平臺歡迎幣圈作者入駐
入駐指南:
/apply_guide/
本文網址:
/news/10381498.html
免責聲明:
1.資訊內容不構成投資建議,投資者應獨立決策并自行承擔風險
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表非小號的觀點或立場
上一篇:
每周編輯精選WeeklyEditors'Picks
Tags:區塊鏈TOKETOKENKEN區塊鏈存證證件具有更高的信任等級BNB Fan TokenASIX TokenBtcdo Token
據韓聯社消息,韓國金融委員會28日宣布,《特定金融信息法實施令》修正案在內閣會議上獲得通過。修正案內容顯示,加密貨幣交易所必須制定和實施業務指南,以防止經營者和高管在自己工作的交易所買賣虛擬貨幣.
1900/1/1 0:00:00吳說作者|吳卓鋮本期編輯|ColinWu1訂單簿vs.AMM上圖就是典型的訂單簿,CEX均采用訂單簿機制來決定資產公允價格.
1900/1/1 0:00:00此前,Gate.io已開啟FORM/USDT、CGG/USDT、HAPI/USDT、XPR/USDT、PDEX/USDT交易對新版流動性礦池,目前上述交易對流動性充足、交易活躍.
1900/1/1 0:00:00活動時間:2021年09月30日21:00至2021年10月14日21:00活動一:新開槓桿用戶完成第一次借款或交易,獎勵100BUSD逐倉槓桿免息券活動期間.
1900/1/1 0:00:009月26日消息,Avalanche生態跨鏈借貸協議Vee.Finance針對此前被攻擊至少致3500萬美元被盜一事更新進展稱,Vee.Finance將承擔全部損失.
1900/1/1 0:00:00巴比特訊,9月25日,針對此前被攻擊至少致3500萬美元被盜一事,Avalanche生態跨鏈借貸協議Vee.Finance更新進展稱,Vee.Finance已向美國當地警察局提交報告.
1900/1/1 0:00:00