React

EthersJS:如何獲取視圖函式的結果

  • June 25, 2021

我真的不明白如何查看簡單視圖函式的結果。我有以下函式需要查詢 ERC-721 合約的令牌 URI:

export const getTokenURI = async (tokenContract, tokenId) => {
 try {
   const contractABI = [
     "function tokenURI(uint256 _tokenId) returns (string memory)",
   ];
   const contractObject = new ethers.Contract(
     tokenContract,
     contractABI,
     signer
   );

   const result = await contractObject.tokenURI(tokenId);
   console.log(result);
   return result;
 } catch (err) {
   throw err;
 }
};

這會在下面的螢幕截圖中記錄有效負載:

在此處輸入圖像描述

現在,該tokenURI函式返回一個 URI 字元串,但我在上面的有效負載中看不到它。我懷疑它在data現場,但是如何解碼呢?

我在這裡錯過了一些基本的東西嗎?

您需要view在 Human Readable ABI 中標記該功能。:)

const contractABI = [
 "function tokenURI(uint256 _tokenId) external view returns (string memory)",
];

如果您不這樣做,ethers.js 會認為它是一種狀態更改方法,因此會為此建構一個事務,而不是簡單的eth_call.

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