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

Rust智能合約養成日記(6)-ODAILY_UST:monero幣怎么挖

Author:

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

相關文章:

Rust智能合約養成日記合約狀態數據定義與方法實現

Rust智能合約養成日記編寫Rust智能合約單元測試

Rust智能合約養成日記Rust智能合約部署,函數調用及Explorer的使用

Rust智能合約養成日記Rust智能合約整數溢出

Rust智能合約養成日記拒絕服務攻擊

拒絕服務攻擊又稱DoS(DenialofService)攻擊,該類型的攻擊將使得智能合約在一段時間內(甚至永久)無法被用戶正常使用。

目前已知的原因大致可分為如下兩類:

合約邏輯中存在的某些缺陷。如某一public函數,其實現沒有考慮到計算復雜度。用戶調用該函數時,實際所需消耗的Gas會超出NEAR公鏈創世區塊配置文件(genesis_config.json)中所定義的"max_total_prepaid_gas":300000000000000`(300TGas),導致交易失敗。

某些跨合約調用情形中,合約的執行依賴于其他外部合約的執行狀態。而外部合約的執行并非總是可靠,以至于本合約的執行可能被外部合約阻塞,無法照常運行。該類問題的發生可表現為合約用戶在合約中的資金被鎖定,以至于無法正常的充值或提現。

Kakao旗下區塊鏈公司Crust Universe被韓國國稅局罰款約1013萬美元:3月23日消息,根據韓國互聯網巨頭Kakao 23日提交的業務報告中稅務機關的制裁情況,其在新加坡成立的區塊鏈公司Crust Universe去年被韓國國稅局罰款約1013萬美元。這是去年首爾地方稅務廳對Kakao的區塊鏈附屬公司Ground X進行稅務調查的結果。此前,首爾地方稅務廳第四調查局在去年通過Crust Universe省略了Ground X在ICO過程中的銷售收入,并將代幣作為獎金支付給員工,且金額低于評估金額,因此稅務廳對相關公司的扣繳稅款展開了稅務調查。(news1)[2022/3/23 14:12:37]

除了合約邏輯的缺陷,DoS現象發生的原因還可以歸因于人為因素:典型的如:合約的所有者丟失了自己的私鑰,以至于合約中部分only_owner可執行的特權函數無法被調用,使得合約中某些重要的系統狀態值無法及時的更新,這將有可能對項目造成較大的損失。

為方便讀者更加深刻地了解智能合約中的DoS攻擊漏洞,本文后續將結合具體DoS攻擊的例子展開描述與分析。本文代碼已上傳至BlockSec官方github,讀者可以自行下載https://github.com/blocksecteam/near_demo/tree/main/DoSDemo

Gnosis將開發以太坊客戶端Erigon的Rust語言實現Akula:6月11日消息,Gnosis團隊宣布停止維護以太坊客戶端OpenEthereum,并將遷移到Akula項目,Akula是以太坊客戶端Erigon(Erigon前身為Turbo-Geth)的Rust實現。

此前報道新的 Erigon 客戶端將支持OpenEthereum 3.x目前在以太坊主網上提供的所有功能,并引入幾個新概念:模塊化客戶端設計,實現客戶端并行開發;存儲以太坊狀態的新“扁平”模型,占用更少的磁盤空間;對存儲引擎外的數據進行預處理,使數據庫寫入操作速度提升一個數量級;分階段同步技術,以提升同步速度。[2021/6/11 23:31:55]

1.循環遍歷一個可被外部調用更改的數據結構

以下是一個用于給合約中注冊用戶“分紅”的簡單智能合約,其狀態數據如下:

用戶可通過調用pubfnregister_account()函數進行注冊并初始化。

動態 | 私鑰管理初創公司Torus融資200萬美元:據The Block 7月9日消息,私鑰管理初創公司Torus融資200萬美元,Multicoin Capital領投,Coinbase Ventures, Sixth Horizon, complice和Terminal也參與了投資。據悉,此輪融資還包括從Binance Labs獲得的50萬美元。[2019/7/10]

后續該合約的管理者將調用pubfndistribute_token函數來為系統中用戶進行"分紅"。“分紅”的方式為遍歷用戶數組self.registered,并通過跨合約調用向每一個用戶轉入指定額度amount的代幣以做獎勵。

然而該合約狀態數據(self.registered)的大小沒有限制,并且可以被惡意用戶所操控,使得該合約數據的大小變得過大。以至于DISTRIBUTOR用戶在調用該合約方法時,可能消耗的Gas費用過高,超出了GASLIMIT。

如下是該合約在實際NEARLocalnet中測試的結果

聲音 | TrustToken聯合創始人:Tether事件不會影響整個穩定幣市場:5月15日,TrustToken聯合創始人兼工程和產品負責人Rafael Cosman在接受采訪時表示,對于市場的波動性和Tether事件的影響,Cosman稱過去幾周的市場上漲也使得幾大主要的穩定幣市值上升,事實上加密貨幣市場不穩定性有利于穩定幣。因為投資者會傾向于使用穩定幣存入或提取法幣,然后對其他加密貨幣進行投資。他表示Tether事件可能會對某些投資者帶來損失,但是不會影響整個穩定幣市場,對Paxos、TUSD、USDC等Tether的競爭對手來說則是利好消息。[2019/5/17]

可以看到當系統中注冊的用戶較多時,實際在distribute_token執行的過程中,所設置的prepaid_gas將不足以滿足所有用戶的轉賬操作,以至于本次交易失敗。

推薦的解決方案:

由于GasLimit的限制,合約方法在執行過程中不建議遍歷一個較大的數據結構(該數據結構的大小可被外部用戶操縱)。確需遍歷的,也需要限制該數據結構的大小,并保證當該數據結構的大小達到該最大值時,也不會觸及GasLimit的限制。

因此推薦采用withdrawal模式對上述合約進行改造。即要求合約方不主動地對所有的用戶逐一發放獎勵,而是先記賬,并設置一個withdraw函數,讓單一用戶通過該函數方法的調用,自行取回“分紅”獎勵。此時合約方也只需要維護逐一用戶已經取回的獎勵數額或者還能取回的獎勵數額即可。

聲音 | BANKORUS總裁:應積極擁抱STO:金色財經獨家現場報道,金色沙龍?破繭系列“STO能否成為區塊鏈行業強心劑”在四分之三區域全球商業中心舉辦,在圓桌會議環節,安華國BANKORUS總裁表示,STO是融資手段和融資模式的更新,對于中小企業及創新企業創業有很大助力,應該積極擁抱STO。金色沙龍系列活動由金色財經主辦,貝殼公關承辦,節點資本聯合主辦。[2018/10/27]

2.跨合約之間的狀態依賴導致合約阻塞

合約在進行跨合約調用時,可能會對外部合約的狀態存在依賴,不恰當的依賴,會導致該合約阻塞,從而可能被發起DoS攻擊

下面考慮一種利用智能合約進行“競價”的場景:

用戶可以通過調用“競價合約”中的pubfnregister_account函數方法注冊賬戶,為參與后續的競價做準備

用戶還可以通過如下接口函數查詢當前系統中目前為止出價最高的用戶ID,及其所出的價格。

用戶還可以通過如下接口函數查詢當前系統中目前為止出價最高的用戶ID,及其所出的價格。

當競價合約收到token時,會通過ft_on_transfer函數調用到如下bid函數。

在該出價函數中,函數的執行邏輯將首先檢查本次用戶的出價是否高于之前出價最高用戶的出價值。如果滿足該條件,將執行self.refund_exe()從“競價合約”中退回之前出價最高用戶的出價代幣。隨后更新目前為止出價最高的用戶ID及其所出的價格。

實際的情況是,根據該合約的邏輯定義:必須要退回之前出價最高用戶的出價代幣,才能將目前為止出價最高的用戶ID進行更替。

在該出價函數中,函數的執行邏輯將首先檢查本次用戶的出價是否高于之前出價最高用戶的出價值。如果滿足該條件,將執行self.refund_exe()從“競價合約”中退回之前出價最高用戶的出價代幣。隨后更新目前為止出價最高的用戶ID及其所出的價格。

實際的情況是,根據該合約的邏輯定義:必須要退回之前出價最高用戶的出價代幣,才能將目前為止出價最高的用戶ID進行更替。

此時測試模擬了“競價系統”的參與的用戶:user0、user1和user2

他們分別擁有10000個初始代幣。user0首先在“競價系統”中出價1000,此時查詢可知current_leader:user0.test.nearhighest_bid:1000。隨后user0立即將剩余的9000個代幣轉給了user2,并銷毀了代幣賬戶。

此后,當user1出價2000時,系統將打算退回user0之前的出價值。但由于此時user0的賬戶已不存在,系統將提示"CannotRefund",始終無法成功完成后續的交易更新狀態。

此時第二位出價者想出價2000:

解決方法:

如果合約的狀態的轉化需要依賴于外部合約的調用處理,則需要考慮外部合約調用可能失敗的情形,防止合約的執行邏輯被阻塞而拒絕服務,即我們需要實現合理的錯誤處理手段。在本例子中,我們可以將無法退回的代幣寄存于合約新增的lost_found用戶組中,當后續用戶滿足條件refund條件時,再由用戶本身來進一步取回代幣(同樣可以實現withdraw函數)。

3.Owner私鑰丟失

去中性化智能合約項目中往往也存在部分中心化的現象:如存在合約的owner。部分合約函數的執行被設置為僅owner可以執行,用以對合約中某些關鍵系統變量值的進行設置更改。我們可以將此類函數稱之為only_owner類型函數。

例如前文在“分紅”合約中所定義的pubfndistribute_token,該函數即為only_owner函數。當合約的owner無法履行職能(私鑰丟失)時,資金將一直被鎖定在合約之中,無法分發給其他用戶。另有大多數的情況下,only_owner函數還可以用來暫停或者重啟合約中的所有交易,可見owner正常履行其職能的重要性。

解決方法:

為避免上述owner個人“失能”情形的發生,我們可增設多位合約的owner共同治理合約,甚至可采用多簽請求的方式來替換原有的合約權限控制方案,以此實現合約的去中心化治理效果。有關智能合約中多簽請求功能的設計實現,將在后續的《智能合約養成日記》中展開詳細的描述。

Tags:USTSEROWNNERtrustwallet怎么提現人民幣sero幣是騙局嗎clowncoinmonero幣怎么挖

MANA
波卡上的數字資產是如何通過公共利益平行鏈Statemint部署的?-ODAILY_TEM:TATECEO價格

“波卡知識圖譜”是我們針對波卡從零到一的入門級文章,我們嘗試從波卡最基礎的部分講起,為大家提供全方位了解波卡的內容,當然這是一項巨大的工程,也充滿了挑戰.

1900/1/1 0:00:00
DAOrayaki:DAO行業進展(雙周報)-ODAILY_DAO:AAVE

DAO行業進展雙周報第18卷——1月22日至2月5日 速覽: lDeepDAO.io:在DAO中投票或提議的人數現在超過50萬。lMaker的KYC/AML監管研究引起了對去中心化的擔憂.

1900/1/1 0:00:00
2022 DAO研究更新:DAO建設者需要什么?-ODAILY_DAO:IDO

我們最新研究的三個關鍵見解DAO的發展速度可能比歷史上任何行業都快。12個月前,DAO總共持有5億美元,現在擁有超過110億美元。這個空間充滿了新的用例,并吸引了來自各背景的建設者.

1900/1/1 0:00:00
操縱預言機就能空手套白狼?DEUS Finance DAO被盜1570萬美元攻擊事件分析-ODAILY_DEI:makerdao下載

北京時間2022年4月28日10:40:14,CertiK審計團隊監測到DEUSFinance的合約被惡意攻擊,造成了約1570萬美元的損失.

1900/1/1 0:00:00
Web3項目為什么需要以去中心化的方式實現自動化-ODAILY_KEEP:WEB

區塊鏈生態已經從單純的鏈上通證發展成了一系列高級的去中心化應用,而這些應用的底層技術就是混合型智能合約.

1900/1/1 0:00:00
Ola Finance攻擊事件分析:400萬美元丟了,你以為這是愚人節故事?-ODAILY_OLA:solana幣最新消息

北京時間2022年3月31日上午10時左右,Fuse上的OlaFinance被惡意利用,導致約400萬美元資產遭受損失.

1900/1/1 0:00:00
ads