買比特幣 買比特幣
Ctrl+D 買比特幣
ads
首頁 > DAI > Info

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

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;}}

英國央行金融科技主管:CBDC將是最安全的貨幣類型:金色財經報道,6月17日,英國央行金融科技主管Tom Mutton在FStech的“金融科技的未來”會議上就央行數字貨幣的前景發表了講話。他表示,CBDC將是“最安全的貨幣類型”。一方面,Mutton堅持認為任何英國CBDC在發布之前都需要做更多的工作。另一方面,與英國央行此前的公開聲明相比,他對CBDC以及區塊鏈在數字英鎊中的潛在作用的看法更為樂觀。Mutton稱,作為英國央行的負債,CBDC將是最安全的貨幣類型。[2021/6/18 23:46:11]

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

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

梓岑:比特幣依然是足夠安全的去中心化網絡:在XBIT算力存證舉辦的行業人物專訪中,RenrenBit CMO梓岑分享其投資方法論,他認為在投資中盡量避免風險指數放大,沒必要過于激進,看好未來市場,數字貨幣仍然是高流動性的優質資產,比特幣依然是足夠安全的去中心化網絡,我們處在一個長期看好但是短期波動劇烈的市場。

XBIT現已開啟猜幣價贏比特幣活動,本次活動共有五十家企業參與,百位大咖助力,百家媒體支持。[2020/4/13]

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

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

現場 | 邱吉民:讓專業的人做專業的事 對于投資者才是負責和安全的:金色財經現場報道,1月24日,在由金色財經主辦的金色沙龍深圳站第一期活動上,引力波G-Wave科技有限公司CEO邱吉民參加了《量化市場-暗流涌動 如何破冰》圓桌對話環節,他指出,數字資產的時間不夠長,金融屬性不夠明確等等都是量化策略比較難做的原因。但不管策略怎么樣,適合當今市場的就是最合適的。在任何的金融市場,能閉著眼睛掙錢的周期是很短的,震蕩周期才是最長的,所以這時候,應該讓專業的人做專業的事,對于投資者來說才是負責和安全的。[2019/1/24]

怎樣支持所有token

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

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

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

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

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

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

火幣區塊鏈研究院院長袁煜明:要從國家層面關注安全的標準:火幣區塊鏈研究院院長袁煜明在回答“區塊鏈技術國家標準制定中最應該考慮的因素有哪些?”提問時表示,一、希望能夠緊跟國際上最先進的技術,保持關注。因為區塊鏈是一個變化非常快的行業, 一定要保持國際化的前沿和視野; 二、希望短時間內不要成為強制性的文件, 希望更多的是一個綱領和指導的東西, 讓全行業都能夠積極地關注這項技術; 三、一定要從國家層面關注安全的標準。這個安全是指多層次的, 不光是區塊鏈本身的安全和技術安全, 還包括從國家戰略層面的國家安全等。[2018/5/15]

這種實現方法只是稍有不同而已,因為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:TOKETOKENTOKKENdeephealthtokenhaiwelltokenBalto TokenVodka Token

DAI
OIN:幣贏觀察 | 加密資產全球監管趨嚴 行業巨頭卻在張開懷抱_Good Boy Points

在加密貨幣行業規模日益巨大,并引發了許多投機行為或者不法活動等背景下,全球監管機構也在積極加強監管措施,跟上加密貨幣行業的發展。目前已有多國監管部門出限制政策.

1900/1/1 0:00:00
PRO:「模擬人生」創作者發布NFT游戲Proxi,用區塊鏈規范游戲內容市場_ProxyNode

本文來自彭博社,原文作者:ClaraMolotOdaily星球日報譯者?|念銀思唐模擬生活電子游戲《模擬人生》的創作者WillWright正著手發布一個新游戲.

1900/1/1 0:00:00
DAO:ZBG關于部分幣種暫停充提幣的公告_USD

公告編號2021100201各位關心ZBG的投資者們和項目方:HT(HECO),DOG,MDX因錢包維護暫停充提幣,具體開放時間以公告為準,給您帶來不便深感抱歉,敬請諒解.

1900/1/1 0:00:00
TPS:XT 關于恢復1000000HVI交易及充提的公告_HTT

尊敬的XT用戶: XT.COM現已恢復1000000HVI交易以及充提業務。暫停期間給您帶來的不便,敬請諒解.

1900/1/1 0:00:00
GAT:Gate.io 支持一鍵參與KSM插槽拍賣活動火熱進行中(目前Genshiro領先)_KSM

第10次波卡插槽拍賣已于2021年9月29日20:00正式開始,正在火熱進行中。目前Genshiro以15,441.8956KSM的質押量排名靠前,截至2021年10月4日14:00,Gate.

1900/1/1 0:00:00
AND:關于PandaFe熊貓中國大陸服務調整的公告_PANDA

尊敬的用戶: PandaFe熊貓為響應當地政府監管政策要求,自2021年9月29日16:00起,停止對中國大陸手機號注冊及KYC認證。其他地區不受影響.

1900/1/1 0:00:00
ads