驗證軟件功能介紹
01
Beosin-VaaS的業務邏輯驗證軟件,是一款用來檢測智能合約上層業務邏輯漏洞的軟件。
基于合約的白皮書,軟件利用形式化方法,首先對單個函數進行屬性的描述,在對單個函數進行屬性的驗證并通過后,基于這些已驗證屬性,抽取出高層的狀態屬性,進而對上層屬性進行自動推理和驗證,若屬性不滿足,則會返回一條反例路徑。
案例介紹
02
我們可以以下面這個案例來舉例說明。
孫宇晨:波聯儲也將從明天開始,每天購買一個BTC:金色財經報道,孫宇晨發推表示,“支持薩爾瓦多總統每天定投比特幣的決定,波聯儲也將從明天開始,每天購買一個BTC”。[2022/11/17 13:16:42]
這里我們考慮進行一次眾籌,目標是在部署后deadline時間內,收集fundingGoal個以太幣。如果在該期間收集到相應數額個以太幣,則表明眾籌成功,在這種情況下,受益人可以提取資金。否則,將認為眾籌失敗,并允許用戶要求退款。眾籌合約本身繼承了token合約,并直接收集眾籌期間投入的所有資金。
Coinbase CEO:每一個國家都需要發展加密領域專業知識:Coinbase首席執行官Brian Armstrong就印度最高法院推翻央行加密貨幣銀行禁令一事評論表示:“如果這是真的,印度加密貨幣發展的一大步。任何一個國家,如果不能在這個領域發展專業知識,培育和幫助初創企業,長期而言都將很難成為全球性金融玩家。世界上的金融中心都在很大程度上接受了它,以保持自己的地位。”[2020/3/5]
具體合約和函數說明
03
我們可以進一步得知,該項目包含了一個Crowdsale合約,繼承一個token合約。
在眾籌合約中,構造函數會初始化設置眾籌的截止時間deadline,并添加眾籌目標額度fundingGoal,并在合約中硬編碼受益人的地址beneficiary;
動態 | 馬來西亞查獲一個非法采礦中心:8月7日消息,自接到公眾舉報,沙撈越能源有限公司(SEB)的公用事業部門SESCO連同警察,電氣監察部門(EIU)做了為期數月的監視。之后,突擊搜查了一個非法采礦中心,該采礦中心占據了統一中央商業中心(Uni Central Commercial Center)的一個店鋪的兩層,用于竊電。 SESCO在一份聲明中表示,技術人員發現該處所沒有任何電表,因為電源直接從SESCO電源線連接到該房屋的配電板。他們表示,根據運行采礦服務器24小時的使用情況,從直接攻絲電纜測得的耗電量很大,估計每月的用電量約為1萬令吉。[2018/8/7]
然后會提供回調函數,提供給用戶來參與投資,在開放眾籌期間,只要未達到目標額度,就允許所有用戶進行投資;
前瑞波老板的一個決定造成了瑞波遭遇120億美元訴訟風波:前瑞波老板克里斯·拉森(Chris Larsen)在2016年做出的一個決定造成了他和公司之間的分歧。瑞波與一家銀行財團簽署了一項協議,其中包括一個合作伙伴以微薄的價格購買500萬個瑞波幣。瑞波稱交易是不誠實的。在過去一個月XRP價格大幅上漲后,現在合同價值達到了120億美元,雙方都陷入了一場官司,這場官司可能會影響該公司及其數字貨幣的未來。瑞波本周在紐約一家法院提起反訴,指控R3財團以惡意的方式簽署了這項交易。訴訟中稱,相反,R3歪曲了它的資源和目前的執行能力,僅僅是為了誘使Ripple執行協議。例如,盡管R3向Ripple表示可以接觸到其大銀行的主要銀行財團,但R3知道并有理由確信,幾家對瑞波起作用的關鍵銀行很快就會離開它的財團。XRP全球均價2.04美元,漲幅4.21%。[2018/1/13]
提供一個checkGoalReached()函數,如果達到眾籌目標,或者達到了截止時間,就可以修改狀態標識,關閉眾籌;
然后會提供響應的transfer()和issue()函數接口,用于在眾籌分配代幣,以及能夠進行代幣的交易
提供一個safeWithdrawal()函數,如果眾籌成功,受益人能夠取出投資人的錢;
最后還提供一個safeClaimRefund()退款接口,如果眾籌失敗,用戶可以通過該接口完成撤資。
結果分析和說明
04
我們這里已經完成了單個函數的屬性驗證,可以確認單個函數的功能是符合其屬性規范的,在此基礎上,編寫上層屬性進行驗證。
以下,我們編寫的上層屬性有兩條,一條是p1,含義是總是能夠滿足,一旦調用了safeWithdrawal()或者safeClaimRefund(),另一個函數就不能夠被成功調用。
P1:
得到輸出結果,可以看到屬性2是滿足的,而屬性1并不滿足。我們查看一下反例的可視化路徑,可以看到,確實存在一條路徑,safeWithdrawal()函數和safeClaimRefund()函數可以先后被執行成功。
回到合約中,根據所提供的反例路徑,可以看到,發生該情況是調用回調函數一段時間后,當前時間超過了眾籌的截止時間,眾籌的資金總量沒有達到目標fundingGoal,在checkGoalReached()關閉眾籌之后,此時的合約狀態,用戶是可以調用safeClaimRefund選擇退款的。
但是我們可以從結果中發現,此時依舊可以調用成功回調函數投資,那么就出現了后面的狀態可能,在眾籌失敗之后,依舊有用戶有意或者無意參與了投資,導致投資的總額超過了目標。
此時,能夠再次調用checkGoalReached()函數結束眾籌,改變狀態標識,最終受益人能夠在按原始需求,眾籌失敗的情況下,且有用戶選擇退款之后,依舊調用checkGoalReached()取出了所有的投資資金。
最終回到合約,我們發現,其實是由于用于投資的回調函數缺少了檢查當前事件是否超過了截止日期,進而導致的合約漏洞。
可以看到,在該例子中,所有的函數其實是滿足其自身的屬性并實現了相應的功能的,但是由于在合約之間、函數之間的調用和關聯關系,才導致出現了這樣一個漏洞。而該屬性驗證工具的作用也在于此,它能夠更加高效地發現邏輯屬性漏洞。
最近和做投資的朋友交流,談論最多的是交易策略:按照自己的交易策略來交易,并嚴格執行。很多人都有交易策略,只是自己沒有重視而已,反而是總想著抓住每一次機會,看到別人曬單收益,頭腦發熱盲目下單,或是.
1900/1/1 0:00:002020年春節,將成為我們這一代人刻骨銘心的記憶,也必將載入史冊。一場突如其來的“新型冠狀病”肆掠祖國神州大地。也因為這一病,對各行各業造成了巨大對沖擊.
1900/1/1 0:00:00最近和大家討論更多的是趨勢和做單心態的問題,道理很簡單,在牛市中大趨勢如此,即使翻來覆去的分析,短期內行情也不會有太大變化.
1900/1/1 0:00:00減半行情開始了嗎?讓我們來看看其他的減半幣種:3月減半的ETC,1月1日4.5美元,最高價7.9美元,漲幅75%;4月減半的BCH,1月1日204.6美元,最高價369美元.
1900/1/1 0:00:00本文來自:NEST愛好者作者:九章天問區塊鏈技術構建了一個去中心化世界,想象一下:一個完整的價值網絡,不依賴于任何個體,不舍晝夜,合約、AI和眾生都能頻繁的互動,價值在他們之間流轉.
1900/1/1 0:00:00智能合約本身沒有訪問區塊鏈外部數據的能力。而外部的數據對于大多數智能合約應用場景來說都是至關重要的,所以這一功能的缺失限制了智能合約的更進一步的發展.
1900/1/1 0:00:00