麻豆国内精品欧美在线-麻豆国内精品久久久久久-麻豆国产在线观看一区二区-麻豆国产在线观看免费-麻豆国产原创-麻豆国产一区二区在线观看

智能合約攻擊之使用Oraclize服務(wù)區(qū)塊鏈

區(qū)塊鏈安全檔案 2018-09-04 02:49
分享到:
導(dǎo)讀

WF曲速未來:近日,在眾多攻擊案例中,有些漏洞成因或攻擊模式少有研究涉及,也出現(xiàn)了一些比較隱蔽的攻擊鏈。一起分析一下因?yàn)槭褂肙raclize服務(wù)的疏忽引起的漏洞和如何在自己的合約中使用Oraclize服務(wù)。

近日,在眾多攻擊案例中,有些漏洞成因或攻擊模式少有研究涉及,也出現(xiàn)了一些比較隱蔽的攻擊鏈。下面WF曲速未來跟你一起分析一下因?yàn)槭褂肙raclize服務(wù)的疏忽引起的漏洞和如何在自己的合約中使用Oraclize服務(wù)。

使用Oraclize服務(wù)的疏忽

為了將區(qū)塊鏈技術(shù)應(yīng)用到線下,例如將飛機(jī)延誤險(xiǎn)、數(shù)字貨幣兌換等業(yè)務(wù)上鏈,區(qū)塊鏈需要具有訪問鏈外數(shù)據(jù)的能力。但是如果智能合約直接從外部服務(wù)獲取數(shù)據(jù),由于網(wǎng)絡(luò)延遲,節(jié)點(diǎn)處理速度等各種原因,會(huì)導(dǎo)致每個(gè)結(jié)點(diǎn)獲取的數(shù)據(jù)不同,使區(qū)塊鏈的共識(shí)機(jī)制失效。

現(xiàn)有的解決方案是使用第三方發(fā)送區(qū)塊鏈的交易,交易會(huì)同步到每個(gè)節(jié)點(diǎn),從而保證數(shù)據(jù)的一致性。Oraclize是一個(gè)預(yù)言機(jī),為以太坊等區(qū)塊鏈提供數(shù)據(jù)服務(wù),它獨(dú)立于區(qū)塊鏈系統(tǒng)之外,是一個(gè)中心化的第三方。Oraclize可以提供的數(shù)據(jù)訪問服務(wù)包括隨機(jī)數(shù)、URL訪問、IPFS等。Oraclize的架構(gòu)如圖所示:

Oraclize不是鏈上直接可以調(diào)用的函數(shù),而是一個(gè)鏈外的實(shí)體。為了抓取外部數(shù)據(jù),以太坊智能合約需要發(fā)送一個(gè)查詢請(qǐng)求給Oraclize,當(dāng)Oraclize監(jiān)聽到鏈上有相關(guān)請(qǐng)求時(shí),立即對(duì)互聯(lián)網(wǎng)上的資源發(fā)起訪問,然后調(diào)用合約中的回調(diào)函數(shù)__callback將查詢結(jié)果返回區(qū)塊鏈。

例如,用美元兌換以太幣的智能合約的數(shù)據(jù)查詢語句如下:

監(jiān)聽到請(qǐng)求后,Oraclize會(huì)訪問URL獲得查詢結(jié)果,然后調(diào)用__callback的函數(shù),Oraclize返回的數(shù)據(jù)通過__callback函數(shù)參數(shù)傳回智能合約。上圖中函數(shù)調(diào)用的參數(shù)[3]中的“3334312e3533”即為當(dāng)時(shí)的匯率:1ETH = $341.53,隨后智能合約會(huì)根據(jù)這個(gè)查詢結(jié)果進(jìn)行后續(xù)的邏輯處理。

SIGMA合約使用了Oraclize服務(wù)查詢匯率。該合約的__callback回調(diào)函數(shù)如下:

由于__callback函數(shù)中存在整數(shù)溢出,導(dǎo)致owner的代幣余額被下溢成一個(gè)很大的值,導(dǎo)致代幣增發(fā)。從代幣份額排名可以看出攻擊者的賬戶地址為0x2ef045a75b967054791c23ab93fbc52cc0a35c80,而該地址并不是創(chuàng)建合約的賬戶地址(0xC7e92D8997359863a8F15FE87C0812D7A3a8F770)。

跟蹤Transactions,發(fā)現(xiàn)0xC7e92D8997359863a8F15FE87C0812D7A3a8F770調(diào)transfer_ownership將合約的owner設(shè)置為0x2ef045a75b967054791c23ab93fbc52cc0a35c80。

針對(duì)這個(gè)漏洞是否使用SafeMath就可以解決了呢?答案是否定的。在Oraclize調(diào)用__callback之前,有用戶對(duì)查詢函數(shù)的調(diào)用,而且這個(gè)調(diào)用花費(fèi)以太幣。

使用SafeMath的情況下,發(fā)生溢出的事務(wù)會(huì)回滾,但本例中能夠回滾的只有Oraclize對(duì)__callback函數(shù)調(diào)用的事務(wù),而之前用戶花費(fèi)以太幣發(fā)生的事務(wù)則無法回滾。WF曲速未來表示這個(gè)現(xiàn)象的根本原因是Oraclize是一個(gè)獨(dú)立的實(shí)體,導(dǎo)致邏輯上應(yīng)該完整的一個(gè)操作被分割成了兩個(gè)事務(wù)。因此,通過Oraclize與鏈下數(shù)據(jù)交互時(shí)只能更加小心,代碼編寫需要更加謹(jǐn)慎。

如何在自己的合約中使用oraclize服務(wù)

在區(qū)塊鏈中正確部署了地址解析器和連接器之后,可以使用node bridge --oar標(biāo)志(生成最新的oar地址)或使用node bridge --instance latest。如果你不使用確定性O(shè)AR,則還需要使用生成的新地址解析器更新合約構(gòu)造函數(shù)。

1.在自己的合約中導(dǎo)入usingOraclize.sol合約

從github上下載oraclizeAPI_0.4.sol合約,并將該文件重命名為usingOraclize.sol,放在你的contracts文件夾中。然后通過

在自己的合約中導(dǎo)入usingOraclize.sol合約。

2.在構(gòu)造函數(shù)中添加地址解析器OAR

例如:

注意:選擇的地址將用于部署Oraclize合約,確保不要在同一地址部署你自己寫的使用了Oraclize的合約。

3.發(fā)送查詢

在Oraclize服務(wù)中,你必須向Oraclize智能合約發(fā)送查詢,Oraclize接收你的查詢并進(jìn)行相應(yīng)的請(qǐng)求。 一旦服務(wù)從API接收數(shù)據(jù),他們就會(huì)在智能合約中調(diào)用回調(diào)函數(shù),你可以訪問和處理所請(qǐng)求的數(shù)據(jù)。

以上代碼用于檢索1個(gè)ETH的當(dāng)前美元價(jià)格。oraclize_queryfunction用于通知Oraclize有關(guān)第三方API。在_callback函數(shù)中,第一個(gè)參數(shù)是請(qǐng)求的ID。 第二個(gè)參數(shù)是請(qǐng)求的結(jié)果。

向Oraclixe發(fā)送一個(gè)查詢時(shí)

1.如果第一個(gè)實(shí)參是字符串,就表示數(shù)據(jù)源,第二個(gè)實(shí)參是數(shù)據(jù)源的輸入條件

2.如果URL數(shù)據(jù)源后只有一個(gè)字符串實(shí)參,表示向此URL發(fā)送HTTP GET請(qǐng)求

3.如果URL數(shù)據(jù)源后有兩個(gè)字符串實(shí)參,表示向此URL發(fā)送HTTP POST請(qǐng)求,第三個(gè)實(shí)參即為POST請(qǐng)求的內(nèi)容,例如:

1)如果第一個(gè)實(shí)參是數(shù)字,就表示在預(yù)約查詢,比如第一個(gè)實(shí)參86400,則表示Oracize在看到此查詢86400s(24h)后開始查詢。

2)如果最后一個(gè)實(shí)參是數(shù)字,它表示自定義的gasLimit,默認(rèn)為200000,不得低于200000。

3)沒有花費(fèi)完的gas將被返還給Oraclize,而非用戶。

區(qū)塊鏈安全公司W(wǎng)F曲速未來提醒:來自任意以太坊地址的第一個(gè)Oraclize查詢調(diào)用都是免費(fèi)的

Oraclize 合約 數(shù)據(jù) 使用 區(qū)塊
分享到:

1.TMT觀察網(wǎng)遵循行業(yè)規(guī)范,任何轉(zhuǎn)載的稿件都會(huì)明確標(biāo)注作者和來源;
2.TMT觀察網(wǎng)的原創(chuàng)文章,請(qǐng)轉(zhuǎn)載時(shí)務(wù)必注明文章作者和"來源:TMT觀察網(wǎng)",不尊重原創(chuàng)的行為TMT觀察網(wǎng)或?qū)⒆肪控?zé)任;
3.作者投稿可能會(huì)經(jīng)TMT觀察網(wǎng)編輯修改或補(bǔ)充。


主站蜘蛛池模板: 亚洲成人免费观看 | 成人综合网站 | 国产精品videosse | 国产成人综合网 | 2021海角社区最新版 | 日韩毛片大全免费高清 | 欧美高清在线不卡免费观看 | 欧美精品亚洲精品日韩专区va | 国产亚洲精品精品国产亚洲综合 | 久久中文电影 | 亚洲男人网 | 激情小说欧美图片 | 湿好紧太硬了我太爽了 | 久久午夜夜伦痒痒想咳嗽P 久久无码AV亚洲精品色午夜麻豆 | 99热热99 | 免费福利资源站在线视频 | 荡娃艳妇有声小说 | 好吊日在线 | 波多野结衣在线中文字幕 | 国产嫩草视频 | 国产乱码免费卡1卡二卡3卡四 | 校花在公车上被内射好舒服 | 国产一区二区三区久久精品 | 亚洲国产中文字幕在线视频综合 | 国产高清久久 | 欧美日韩视频在线第一区二区三区 | 国产亚洲欧美一区二区三区 | 久久精品国产亚洲AV热无遮挡 | 亚洲精品国产综合久久一线 | juy799大岛优香在线观看 | 91尤物在线 | 亚洲天堂视频在线观看 | 久久棋牌评测 | 操久久| 亚洲精品久久久打桩机 | 高中生放荡日记高h娜娜 | 日本老妇成熟 | 日本成年片高清在线观看 | 九九九精品视频 | 久久久久久久久人体 | 欧美精品色精品一区二区三区 |