Solidity

// dev: 在 revert 或 require 語句之後的註釋的目的是什麼?

  • June 14, 2020

// dev:當 Solidity 合約包含以 revert 或 require 語句開頭的註釋時,這意味著什麼?

例如:

contract Example {
   function greet(){
       revert(); // dev: Hello World        
   }
}

這稱為開發人員回複評論。從布朗尼文件

每個還原字元串都會為您的合約部署成本增加至少 20000 個 gas,並增加執行函式的成本。為每個requireandrevert語句包含一個恢復字元串通常是不切實際的,有時由於塊氣體限製而根本不可能。

因此,Brownie 允許您將還原字元串作為原始碼註釋包含在內,這些註釋未包含在字節碼中,但仍可通過TransactionReceipt.revert_msg. 您編寫針對特定requirerevert語句的測試,而不會增加 gas 成本。

要編寫處理問題中範例的測試,請使用以 開頭的整個還原註釋dev

import brownie

def test_greet(example):
   with brownie.reverts("dev: Hello World"):
        example.greet()

了解更多資訊:

披露:我是 Brownie 的首席開發人員。

引用自:https://ethereum.stackexchange.com/questions/84259