Solidity
何時使用 web3modal 以及何時使用錢包訪問 .sol 智能合約的功能?
我正在建構一個引導式 web3 項目來訪問智能合約功能;該指南有時使用 web3modal 和錢包。下面的程式碼使用 web3modal 呼叫生成 ERC721 令牌的函式。
const web3modal = new Web3Modal(); const connection = await web3modal.connect(); const provider = new ethers.providers.Web3Provider(connection); const signer = provider.getSigner(); const mintNftcontract = new ethers.Contract(hhMintNftContract, MintNFTABI, signer); let mintNfttransaction = await mintNftcontract.mintNftToSell(url);
但是,下面的程式碼使用錢包呼叫同一智能合約的函式來獲取鑄造的 ERC721 代幣。
const provider = new ethers.providers.JsonRpcProvider(hhRpc); const wallet = new ethers.Wallet(hhPriKey, provider); const ImagicaMarketContract = new ethers.Contract(hhImagicaMarketContract, ImagicaMarketABI, wallet); const mintNFTContract = new ethers.Contract(hhMintNftContract, MintNFTABI, wallet); const listedNFTData = await ImagicaMarketContract.getAvailableNFT();
那麼,在這個項目中這樣做有什麼具體原因嗎?我能找到的一種模式是,在區塊鏈上寫入數據的函式使用的是 web3modal,當從區塊鏈讀取數據時,使用的是錢包。但這只是我的猜測。
因此,如果有人能幫助我理解為什麼以及何時應該使用 web3modal 或錢包來訪問智能合約功能,那將是一個很大的幫助。請 :)
Web3Modal 是一個將使用者與您的 Dapp 連接起來並開始與區塊鏈互動的庫,但是對於創建實例,您應該將錢包作為簽名者或提供者傳遞。我建議在這裡閱讀 web3model 並在ether.js 中創建一個實例