Contract-Invocation

你可以在合約呼叫中輸入一個變數嗎?

  • October 15, 2018

在 ETH 中,你可以通過輸入可變參數來呼叫合約嗎?由於該參數的值在呼叫時是未知的,並且必須在執行時進行評估?

類似“someFunction(current_time_at_run_time);”的東西 - 這是允許的嗎?

謝謝。

您不能讓 EVM 在您在交易中提供的參數中插入內容。創建事務的程式碼(通常是 JavaScript)當然可以執行牠喜歡的任何計算來創建參數,但在您的情況下,創建事務的時間與執行(探勘)的時間不匹配。

您可以做的是將呼叫包裝在另一個契約中,並讓外部契約執行您想要的插值。

contract Inner {
 function someFunction(uint timestamp) {
   // do something with that timestamp
 }
}

contract Outer {
  function callInnerWithCurrentTime(address inner) {
    Inner(inner).someFunction(now);
  }
}

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