Solidity
Solidity - 智能合約交易的返回值
為什麼 Solidity 交易函式不返回任何值?
這是一個簡單的例子。我在remix和 web3 中對其進行了測試。
pragma solidity ^0.4.25; contract SimpleStorage { uint public storedData; constructor(uint initVal) public { storedData = initVal; } function set(uint x) public returns (uint retVal) { storedData = x; return storedData; } function get() view public returns (uint retVal) { return storedData; } }
我想呼叫該合約的SET 函式並立即返回最近分配的值**,而不呼叫 GET**。
因此,我返回我剛剛發送的值。但是,這似乎不起作用。
我得到的是:
注意解碼輸出的值為空。
有沒有辦法讓SET-Function輸出它剛剛分配的值?
你可以嘗試事件,看看這個:https ://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html?highlight=events#events
該值實際上是返回的,但我們還沒有辦法通過 web3 庫來獲取它。想一想:如果您的客戶不知道交易何時或是否包含在一個塊中,它如何獲得返回值。
幸運的是,有一個解決方案。它被稱為“事件”,請查看:https ://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html?highlight=events#events