web3.js 使用
初始化 Web3.js
const { Web3 } = require("web3");
const web3 = new Web3();初始化合約
if (window.ethereum) {
window.web3 = new Web3(window.ethereum); // 參數內填入 provider
window.ethereum.enable();
}
try {
var web3 = window.web3;
var web3 = new Web3(web3.currentProvider);
} catch (err) {
alert("Please install Metamask first");
// window.location =
// "https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn";
}
const ContractERC721 = new web3.eth.Contract(ERC721.ABI, ERC721.address);
window.ContractERC721 = ContractERC721;執行不需要交易的 function
Big Number
監聽帳戶轉帳交易
Pending Transaction
Mined Transaction (confirmed transaction)
獲取帳戶歷史交易
監聽合約 Event
後端使用ECDSA 簽名與驗證
前端使用簽名與驗證
重新整理與初始化頁面時的 web3 地址顯示與簽名
建立 raw transaction
後端使用私鑰發送轉帳交易
如果出現 Invalid sender 的話記得檢查下 web3 rpc url 跟 chainid 有沒有對應:
單位換算
讀取合約餘額然後到網頁顯示
換算回原本的精度然後寫回合約
Approve max allowance
從後端私鑰發送合約交易
轉換 blockNumber 為 timestamp
獲取合約 event 歷史
注意事項
Last updated
