下面的合約是一個鎖定金額的合約,用戶將資金存儲在此合約中,只有當過了一段時間時候才能夠提取出來。
下面的案例是為了說明storage屬性預設性帶來的陷阱。payIn函數是當用戶存儲金額時調用的函數。傳遞的參數似乎解鎖的時間。在合約payIn中,HoldRecord newRecord; 其實默認為storage類型,并且,當不為storage變量賦值的時候,變量默認引用的位置是storage空間中的0號位置。這也意味著在當前的案例中,newRecord指針指向了ownerAmount,當對newRecord 執(zhí)行newRecord.amount += msg.value; 實則將ownerAmount即合約擁有者的金額增加了。 這時,合約擁有者就可以調用ownerWithdrawal將用戶存儲在合約的錢轉移出來。
1 | pragma solidity ^0.4.23; |
HoldRecord newRecord 修改為 HoldRecord memory newRecord
1 | // 這個例子是要舉出在 smart contract 中 storage 預設行為的危險性。其實只要維持一個原則就可以避免這個問題。 |
本文鏈接: https://dreamerjonson.com/2018/11/25/solidity-52-security-storage/
版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 4.0 CN協(xié)議 許可協(xié)議。轉載請注明出處!
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節(jié)活動現已開啟,新人活動云服務器買多久送多久。
當前標題:solidity智能合約[52]-安全-storage陷阱-創(chuàng)新互聯(lián)
文章源于:http://aaarwkj.com/article16/cccdgg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站收錄、企業(yè)網站制作、做網站、App設計、全網營銷推廣、品牌網站制作
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)