Solidity
使用“原始”編碼數據在 Gnosis Safe 上執行查看/讀取功能
我正在嘗試通過 Gnosis Safe 介面執行 ERC721“ownerOf”功能
function ownerOf(uint256 tokenId) public view returns (address)
。當我使用 Gnosis 界面時,它工作正常,並且我返回了所有者的地址。但是,當我使用“自定義數據(十六進制編碼)”選項時,傳入自定義數據以執行完全相同的操作並執行交易(需要消耗氣體),我在歷史記錄和 Etherscan 上看到了交易,但沒有看到任何地方的結果。無論如何執行原始交易並獲得 NFT 所有者的結果?
view
契約上的功能旨在檢索資訊。Safe 界面使這成為可能,並允許您查看返回的資訊。Solidity 不允許view
函式中的狀態更改(請參閱Solidity 文件)交易旨在在區塊鏈上執行狀態更改(例如轉移所有權)。此外,事務沒有返回值(只有成功標誌)。
因此,通過事務呼叫
view
函式並沒有真正意義,只會消耗氣體。Consensys 有一篇部落格文章如何在智能合約中使用視圖函式和事件。