如題
合約在Rinkeby做測試
在call 合約的method時拋出mint to the zero address的錯誤
因為在Remix上測試時沒有錯誤 所以我想可能是前端的問題
前端框架是nextjs
套件用的是Web3
以下是初始化的code
const init = async () => {
const web3 = new Web3(Web3.givenProvider || "http://localhost:3000");
const network = await web3.eth.net.getNetworkType();
setNetwork(network);
const accounts = await web3.eth.getAccounts();
setAddress(accounts[0]);
setWeb3(web3);
const c = new web3.eth.Contract(ABI, contractAddress);
setContract(c);
};
React.useEffect(() => {
init();
}, []);
然後有一個按鈕按下去之後會觸發Send的Function
const send = () => {
if (number < 0) return;
contract.methods
.mintBook(number, content, 0x00)
.call()
.then((tokenId: any) => {
setTokenId(tokenId);
})
.catch((err: any) => console.log(err));
};
mintBook是合約的方法,內容如下
function mintBook(
uint256 numberOfBooks,
string memory content,
bytes memory data
) public payable returns (uint256) {
uint256 tokenId = _tokenIdCounter.current();
_tokenIdCounter.increment();
_bookContent[tokenId] = content;
_initBookAmount[tokenId] = numberOfBooks;
_mint(msg.sender, tokenId, numberOfBooks, data);
return tokenId;
}
因為我拿mint to the zero address去查
好像都是在測試的時候就出錯
但我是測試沒問題 直到上到測試鏈之後才跳出這個錯誤
想請問可能是哪裡出問題
感謝大家
============更新==============
後來發現是方法用錯了
改成
await contract.methods
.mintBook(number, content, 0x00)
.send({
from: address,
});
即可