Transactions

如果我需要交易或電話,如何從 web3py 中理解

  • April 9, 2019

我有一個帶有函式的契約,其中只有當某個條件為真時,它才會改變區塊鏈的狀態,否則它會發出一個事件並返回:

address[] public global_state;
function test() public payable returns (bool) {
   if (condition on global_state) {
       emit Event();
       return false;
   }
   // change the state
   global_state.push(address("0x0"))
   return true
}  

如果我理解正確,如果條件為真,我不需要事務,一個簡單的呼叫就可以完成這項工作。

但是當我從 web3py 呼叫函式時,我不知道條件的狀態。我想知道之前是否有辦法理解它並使用 web3py 進行正確的呼叫,因為對於交易我需要等待,但對於呼叫,我不需要。

發出事件也是修改操作,因為事件記錄在塊中。但是,如果您不需要其他人可以看到事件,您可以執行以下操作:

  1. 通過本地呼叫函式call
  2. 檢查返回值
  3. 如果返回值為true,則通過在事務中呼叫函式send

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