MoveBit(莫比安全)作為專注於服務Move生態的安全公司,近期和Aptos 合作開展了Aptos Framework 的形式化驗證工作。 Aptos 是一個頂級公鏈,其願景是將Web3 帶入主流,並獲得頂級資本的投資,而其底層基礎代碼庫Aptos Framework 是Aptos 公鏈上的通用Move 庫,包括了賬戶、NFT、Token 等通用標準,是生態建設的重要基礎設施。
Aptos Framework 的安全性是Aptos 上開發各種Move 項目應用安全的基礎。在此形式化驗證工作之前,MoveBit 團隊全面了解分析了Aptos Framework 的開發資源和框架架構,並和Aptos Team 合作開啟了基於Move Prover 的形式化驗證。
以下是MoveBit 團隊對Aptos Framework 形式化驗證後的代碼提交示例:
添加了模塊帳戶和幣的規範。詳細鏈接:https://github.com/aptos-labs/aptos-core/pull/5237 添加了模塊和aptos_account 和state_storage 的規範。詳細鏈接:https://github.com/aptos-labs/aptos-core/pull/5478 更新了consensus_config 的規範,添加了transaction_fee 和transaction_validation 的規範。更新了重新配置和權益以及storage_gas 的規範。詳細鏈接:https://github.com/aptos-labs/aptos-core/pull/5549 添加了Aggregator & AggregatorFactory & OptionalAggregator & StakingConfig & Version & Event & Guid & Timestamp 規範。詳細鏈接:https://github.com/aptos-labs/aptos-core/pull/5653 添加了模塊gas_schedule & aptos_coin & chain_id & chain_status 的規範。詳細鏈接:https://github.com/aptos-labs/aptos-core/pull/5771
withdraw() 是aptos-framework coin模塊下的一個函數,該函數作用是從簽名賬戶中提取指定數量的代幣,並將代幣返回。 MoveBit為aptos提供了形式化驗證代碼。 我們驗證了`withdraw`函數的功能性質及中止條件.
`balance`是`account`賬戶下(某種)代幣的餘額,`amount`為要取出的代幣餘額,我們可以看到,該函數有三種中止(abort)的情況:
1.該賬戶下不存在`CoinType`類型的代幣。
2.該賬戶下餘額不足
3.該賬戶被凍結
我們預期執行完該函數後,`account`賬戶下的餘額應該為`balance - amount`,且返回一個金額為`amount`的代幣。如果沒有達到我們的預期,那麼prover會提示我們條件沒有滿足。
- deposit 函數作用是將代幣餘額存入接收者的賬戶。
該函數有兩種中止的情況:
1.接收者的賬戶被凍結
2.接收者的賬戶下不存在CoinStore<CoinType>資源
我們預期執行完該函數後接收者賬戶的餘額等於接受前的餘額加上轉入的金額。且返回一個金額為amount的代幣。
關於MoveBit
MoveBit(莫比安全)團隊是一家服務於Move生態的安全公司,其願景是讓Move生態成為最安全的Web3生態系統。 MoveBit團隊由學術界安全大牛和企業界安全領軍人物組成,具有10年的安全經驗,在NDSS 、 CCS等頂級國際安全學術會議上發表安全研究成果。團隊是Move生態最早期的貢獻者,與Move開發者共同製定安全Move應用的標準。 MoveBit已經陸續與全球多家知名交易所、公鏈項目合作,為合作夥伴提供安全審計服務。
MoveBit社交媒體平台:
官方網址: https://www.movebit.xyz/
Twitter : https://twitter.com/MoveBit_
Medium : https://movebit.medium.com/