Solidity
// dev:
在 revert 或 require 語句之後的註釋的目的是什麼?
// dev:
當 Solidity 合約包含以 revert 或 require 語句開頭的註釋時,這意味著什麼?例如:
contract Example { function greet(){ revert(); // dev: Hello World } }
這稱為開發人員回複評論。從布朗尼文件:
每個還原字元串都會為您的合約部署成本增加至少 20000 個 gas,並增加執行函式的成本。為每個
require
andrevert
語句包含一個恢復字元串通常是不切實際的,有時由於塊氣體限製而根本不可能。因此,Brownie 允許您將還原字元串作為原始碼註釋包含在內,這些註釋未包含在字節碼中,但仍可通過
TransactionReceipt.revert_msg
. 您編寫針對特定require
或revert
語句的測試,而不會增加 gas 成本。要編寫處理問題中範例的測試,請使用以 開頭的整個還原註釋
dev
:import brownie def test_greet(example): with brownie.reverts("dev: Hello World"): example.greet()
了解更多資訊:
披露:我是 Brownie 的首席開發人員。