在DApp中使用錢包是件非常常見的事情
讓使用者可以使用自己的帳戶
檢查帳戶資訊、轉帳、查詢區塊或交易、合約互動等等
比起直接輸入密鑰的方式 透過與錢包連動 也比較讓人安心
這篇將以下重點進行敘述:
另外可參考 GitHub 專案位置:
https://github.com/weiawesome/dapp_website
├── src
│ ├── app
│ ├── pages
│ │ ├── connect_wallet.tsx
│ ├── style
│ │ ├── connect_wallet.css
│
"src/app/pages/connect_wallet.tsx" 邏輯與基本布局
"src/app/style/connect_wallet.css" 對上述畫面的修飾
因此 最後畫面會顯示在 /connect_wallet 這個路由下
透過 npm 進行下載
# 下載 web3.js
npm install web3
const initWeb3=async () => {
if (typeof window.ethereum !== 'undefined') {
setWeb3Address("");
setWeb3Amount("");
await setWeb3(new Web3(window.ethereum));
try {
const accounts=await window.ethereum.request({method: 'eth_requestAccounts'});
const account = accounts[0];
const balanceWei = await web3.eth.getBalance(account);
const balanceEther = web3.utils.fromWei(balanceWei, 'ether');
setWeb3Amount(balanceEther);
setWeb3Address(account);
console.log('已連接到 MetaMask');
} catch (error) {
console.error('連接到 MetaMask 時出現錯誤:', error);
}
} else {
console.log('請安裝 MetaMask 錢包並連接到網絡');
}
}
# 下載 ethers.js
npm install ethers
const initEthers=async ()=> {
if (typeof window.ethereum !== 'undefined') {
setEthersAddress("");
setEthersAmount("");
await window.ethereum.request({ method: 'eth_requestAccounts' });
setProvider(new ethers.BrowserProvider(window.ethereum));
const signer = await provider.getSigner();
const addr= await signer.getAddress();
const balance = await provider.getBalance(addr);
setEthersAmount(formatEther(balance));
setEthersAddress(addr);
console.log('已連接到 MetaMask');
} else {
console.log('請安裝 MetaMask 錢包並連接到網絡');
}
}
不論點擊透過 web3.js 或是 ethers.js 都需要經過同意
備註:
此處仍可以使用測試網路(Ganache)
當然也可以選擇以太鏈主網
但因為我帳戶裡面沒有錢 測試起來方便 因此使用測試網路
可以根據自己的需求做修改
網頁上資訊:
Ganache上資訊:
成功連接上 MetaMask(錢包) 感動 感動 真感動
其實在區塊鏈服務上 以開發來說
連接帳戶的方式還有很多種(不同通訊協定、密鑰、註記詞等等)
又或者是隨機創建帳戶。
不過 今天就以創建一個 "應用程序" 來說
認為連接現有錢包是最普遍且迅速的方式
當然這不代表其他方式都用不到 完全可以根據自己的開發需求去調整。
希望透過這篇能夠理解
既然都已經連上錢包了
鐵定想要做更多事對吧
那那那 可以查詢區塊嗎?
還有 交易資訊也可以查詢嗎?
還有好多好多疑問喔!!!
沒關係 那就一步一步慢慢充實 DApp (去中心化應用程序)