加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads
首頁 > 瑞波幣 > Info

安全的處理 ERC20 轉賬(解決非標準 ERC20 問題)_TOK:TOKE

Author:

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

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對: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;}}

OpenAI發文介紹保障AI安全的方法:金色財經報道,ChatGPT 研發者 OpenAI 在其官方博客中發布了題為《Our approach to AI safety》(《我們保障 AI 安全的方法》)的文章,介紹了該公司確保 AI 模型安全性的部署。該文章介紹了六個方面的部署,一是構建越來越安全的 AI 系統,二是從實際使用中積累經驗以改善安全措施,三是保護兒童,四是尊重隱私,五是提高事實準確性,六是持續研究和參與。

該文章介紹,OpenAI 要求用戶必須年滿 18 周歲,或年滿 13 周歲經父母批準,才能使用其 AI 工具,該公司正在研究驗證選項。OpenAI 不允許其技術用于生成仇恨、騷擾、暴力或成人類別的內容,并阻止兒童性虐待等材料上傳到其圖片工具中等。[2023/4/6 13:47:56]

我們可以看到,與DAI不同,當出錯時0x不會回退交易,而是返回false,但是我們在代碼中不管這個返回值。本質上,任何人都可以與我們合約的interactWithToken交易,合約會認為成功交易了一個token,但實際上什么也沒有做。很糟糕!

Coinbase確認其代表灰度持有約63.5萬枚BTC是安全的:金色財經報道,Coinbase確認其代表Grayscale Bitcoin Trust持有約63.5萬枚BTC是安全的。Coinbase會定期執行“鏈上驗證”以確認數量的BTC的存在和安全。[2022/11/22 7:54:18]

ZRX仍然符合ERC-20標準,因為沒有任何地方規定ERC-20合約必須在發生失敗時回退交易。這兩種方法都有優點和缺點。在上面的例子中,很明顯我們只需要檢查返回值就知道是否成功,一段簡單的代碼require(token

catchError(stringmemory/*reason*/){success=false;//specialhandlingdependingonerrormessagepossible}catch(bytesmemory/*lowLevelData*/){success=false;}if(success){//handlesuccesscase}else{//handlefailurecasewithoutreverting}}

動態 | 德國財政部:門羅幣對金融安全的威脅要大于比特幣:據Decrypt報道,德國財政部最近發表的一份關于金融安全風險評估的報告表明,門羅幣等隱私加密貨幣實際上對金融安全的威脅要大于比特幣。這主要是由于使用門羅幣進行交易具有匿名性質,被犯罪分子在暗網上利用。根據該報告,無法跟蹤門羅幣交易的功能使其適合犯罪分子使用,比特幣被懷疑是犯罪暗網活動的一種貨幣,被發現與匿名活動相距甚遠,并且對犯罪活動的吸引力較小。德國財政部表示,德國政府將修改法律,以規范加密貨幣交易所,錢包提供商和其他從事洗錢的保管服務提供商。[2019/10/23]

這樣你就可以為兩個版本的ERC-20合約做錯誤處理。

怎樣支持所有token

現在你已經支持了ERC-20標準的token,然而有相當多的token看起來像ERC-20,但是它的有些行為卻不像,有些出現缺少返回值的錯誤。

有一段時間,OpenZeppelin有一個bug,他們在失敗的時候回退交易,但沒有在成功時返回true。這個bug讓很多token都受到了影響,包括USDT、OmiseGo和BNB。你期望返回一個布爾值,卻沒有任何值返回,這種情況,如果用Solidity0

動態 | 伊朗稱Telegram的硬幣是對國家安全的威脅:據news.bitcoin消息,根據美國犯罪內容定義工作組秘書Javad Javidnia最近的一份聲明,伊朗當局將把任何與Telegram合作發布其加密的行為認定為“違反伊斯蘭共和國國家安全的行為”。Javidnia表示,禁止電報最重要的因素之一是其活動似乎對國民構成一種嚴重的經濟威脅。[2019/1/1]

其先檢查返回數據的大小,如果是0,我們就假定它是行為不正常的token。如果調用沒有回退交易,那就意味著交易成功了,應該返回true。

隨著Solidity的版本更新,我們可以簡化這段代碼,像Uniswap是這樣做的:

functionsafeTransfer(addresstoken,addressto,uintvalue)internal{//bytes4(keccak256(bytes('transfer(address,uint256)')));(boolsuccess,bytesmemorydata)=token

動態 | BCH開發人員:Avalanche協議可支持安全的零確認交易:據bitcoin.com報道,BCH開發人員Chris Pacia最近發布的一篇名為“使零確認交易安全”的文章,描述了Avalanche協議如何通過讓一組參與節點達成共識來保護未經確認的交易。Pacia表示,在比特幣現金中使用Avalanche進行礦工協調提供了一種非常優雅、分散的協調機制,可以防止礦工受到雙花攻擊,并且當與雙花通知相結合時,使零確認交易交易非常安全。[2018/12/13]

這種實現方法只是稍有不同而已,因為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:TOKKENTOKENTOKEimToken手機appZinaX TokenBitcointry Tokensftoken

瑞波幣
報告:中歐、北歐和西歐地區在過去一年已成為全球最大加密經濟體_加密貨幣:DeFiHorse

本文來自?Decrypt,原文作者:LiamFrostOdaily星球日報譯者?|念銀思唐 摘要: -據Chainlaysis稱,中歐、北歐和西歐地區在過去一年已經成為全球最大的加密經濟體.

1900/1/1 0:00:00
《時代周刊》NFT搶購記_NFT:romiechain

9月24日0點,《時代周刊》開啟名為“構建更美好的未來”的首場NFT銷售。然而,銷售開啟不到1分鐘,總計4676件NFT作品就宣告售罄.

1900/1/1 0:00:00
Glassnode鏈上周報:市場由HODLers和交易員主導,新進入者和散戶投機者參與較少_比特幣:SSN

來源:Glassnode 編譯:AmyLiu 上周比特幣市場經歷了震蕩的下行價格走勢,周一開盤報47,328美元,并跌至39,876美元的低點.

1900/1/1 0:00:00
DappRadar報告:17張圖解讀前四大幣種的價值流動數據_APP:DAPP

本文來自Dappradar,原文作者:PedroHerrera,由Odaily星球日報譯者Katie辜編譯.

1900/1/1 0:00:00
開啟dotmoovs (MOOV)交易 / 2021.9.24_THE:MOONX

親愛的BitGlobal用戶:BitGlobal將在GEM上線MOOV數位資產服務,?詳情如下充提安排:9月28日11:00(UTC8)開放立即充值>>交易時間:9月29日17:00.

1900/1/1 0:00:00
解析閃電網絡的漏洞:悲傷攻擊、時間膨脹日食和固定攻擊-2021-09-28 17:51:56

每當有人提到比特幣網絡是多么的緩慢和昂貴,最常見的反對比特幣論點是閃電網絡——“比特幣是更好的!”閃電網絡是即時的,而且不收費!”這是一個典型的轉移注意力的方法.

1900/1/1 0:00:00
ads