比特幣價格 比特幣價格
Ctrl+D 比特幣價格
ads

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

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創造更便宜、更快速和更安全的生態系統:3月16日消息,金融服務巨頭德勤的一份題為《國家支持的加密貨幣》分析報告指出,比特幣能夠幫助央行數字貨幣(CBDC)創造一個更便宜、更快速和更安全的生態系統。此外,分析指出,雖然CBDC不會作為BTC和其他加密貨幣的一對一替代品,但CBDC的主流化將為用戶選擇最合適的支付媒介開辟一個額外的選擇。(Cointelegraph)[2022/3/16 13:59:56]

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

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

新品發布會 | OKEx徐坤:在疫情危機之下,資金、資源都會流向最安全的地方:4月2日18:00,金色財經舉辦以“?-ing”為主題的新產品發布會,在圓桌討論環節中針對“區塊鏈市場的競爭態勢將如何演變以及資源將向哪些領域傾斜”的問題,OKEx首席戰略官徐坤表示,整個市場的頭部效應會更加明顯,尤其在疫情危機之下,資金、資源都會流向最安全的地方,大公司有更強的資金儲備、組織管理能力,從而更能抵抗風險。從交易所而言,頭部交易所安全性更好,不會像小交易所出現倒閉、暴雷等風險,而且系統流暢性、交易深度、產品種類也更有競爭力。而從OKEx來說,無論技術、人才還是資金,都有非常強的儲備,我們也在大力進行全球化的布局。公鏈生態中也是如此,大量山寨幣落下帷幕,開發者、資金、流量都會更加集中在頭部項目,比如比特幣和以太坊。最后提一下,不要為了區塊鏈而區塊鏈,要做真正的應用或者區塊鏈技術相關才是有價值的。[2020/4/2]

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

聲音 | CSW:比特幣使我們創建安全的網絡:12月7日下午,在BSV中國大會上,BSV創始人 Craig Wright發表演講表示,數十億的用戶都經歷過數據泄露,如果我們互聯網設施行之有效,互聯網自動升級更新,不需要把信息出售給谷歌等大公司,而是自己做這件事,不是幾家大型公司來做,我們自己做這件事,沒有人追蹤這些,這樣才能保護我們的數據。比特幣使我們創建安全的網絡,我們自己掌握自己的信息,我們用安全的方式訪問我們的設備。我們希望信息被私人擁有,人們控制自己的數據,人們擁有選擇權,我們搭建基于市場的系統。比特幣創建的初衷,不是數字黃金,而是去中心化,指的是將紙質的紀錄電子化,我們把這些變成電子化,標記化,人們可以在網上交易。[2019/12/7]

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

怎樣支持所有token

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

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

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

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

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

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

聲音 | Kevin Rose:投票是保障代幣資產最安全的方式:EOS New York 的 Kevin Rose 在《EOSLaoMao · 寧話區塊鏈》之全球EOS節點答疑的節目中稱“投票是保障代幣資產最安全的方式。大家知道,在 EOS 上,我們都有公鑰和私鑰。當你投票表決時,有一個三天的鎖定期。想象一下,如果你的公鑰不起作用了,它可能是泄露了,或是被偷走了,或者用其他方法別人得到了密碼。如果他們想要嘗試入侵你的錢包,偷走你的代幣,但是直到三天之后,他們才能進入錢包把錢轉出來。在那期間你可以設置一個警報,賬戶里一有變動就會通知你。然后你就可以進入賬戶,用你的私鑰修改你的公鑰,確保代幣的安全。這就是投票對賬戶安全的好處。所以投票,是保障資產安全萬無一失的方法,是預防騙子和小偷最理想的,也是第一道防線。”[2018/8/2]

這種實現方法只是稍有不同而已,因為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:TOKEKENTOKENTOKmanitosupertokenimToken手機appitokenwallet觀察錢包系統操作權限SEMI TOKEN

比特幣價格
CLE:關于Dcoin(大幣網)短信通知服務調整的公告_ONI

親愛的大幣網(Dcoin)用戶: ??? ????Dcoin將于9月30號前陸續暫停部分地區的短信通知服務。包含但不限于交易類通知,其中包括風險率預警、強平通知等時效性較強的重要通知.

1900/1/1 0:00:00
區塊鏈:關于FIL恢復充提業務的公告_我國為什么禁止加密貨幣

尊敬的用戶: WBF現已恢復FIL的充值、提幣業務,請您提前做好相應準備,如有任何問題,請聯系WBF官方客服.

1900/1/1 0:00:00
KEX:BKEX Global 關于上線 GRO(Gro DAO Token)并開放充值功能的公告_Qura Global

尊敬的用戶:?????????????BKEXGlobal即將上線GRO,詳情如下:上線交易對:GRO/USDT幣種類型:ERC20?充值功能開放時間:已開放交易功能開放時間:2021年10月3.

1900/1/1 0:00:00
MEX:MEXC關於“CYS充值瓜分20,000USDT活動“活動獎勵發放的公告_MEXC

MEXC上線的“CYS充值瓜分20,000USDT活動“活動已結束。活動獎勵已發放,請獲獎用戶請前往--中查看。感謝用戶對本次活動的支持,如有疑問請聯繫在線客服.

1900/1/1 0:00:00
HTT:XT關于隱藏并下架WZRY/USDT交易對公告_tps幣圈

尊敬的XT用戶: 由于WZRY合約地址出現問題,為保證用戶資產安全,項目方申請下架WZRY/USDT。應項目方要求,XT.COM將于2021年9月30日14:00關閉WZRY/USDT交易對.

1900/1/1 0:00:00
區塊鏈:尋找下一個DeFi爆發點,鏈上數據還能帶給我們什么洞察?_區塊鏈專業就業前景

不斷發展的區塊鏈行業 區塊鏈技術是當今的一個熱門話題,尤其是在2017年DeFi的出現,加密貨幣世界迎來爆發性增長,NFT等也成為了新的潮流.

1900/1/1 0:00:00
ads