經過前兩天的介紹和實作,我們現在將學習如何部署智能合約以及與之進行互動。在開始之前,確保你已經成功編譯了智能合約並得到了字節碼(.bin)和 ABI(.abi) 文件。
首先,我們需要一個以太坊測試網路,這樣我們可以在不花費實際以太幣的情況下進行合約測試。你可以在 https://infura.io/ 上註冊一個帳戶,並創建一個以太坊測試網路的項目。
不需花費是一件很重要的事情之一!!!!
接下來,我們將使用 web3.js 來與以太坊區塊鏈進行通信。
我們可以撰寫一個簡單的 JavaScript 腳本,用來部署合約和進行互動。創建一個名為 deploy.js 的文件:
const Web3 = require('web3');
const fs = require('fs');
const infuraUrl = 'https://ropsten.infura.io/v3/YOUR_INFURA_PROJECT_ID'; // 替換成你的 Infura 項目 ID
const web3 = new Web3(new Web3.providers.HttpProvider(infuraUrl));
const bytecode = fs.readFileSync('./compiled/Voting_sol_Voting.bin', 'utf-8');
const abi = JSON.parse(fs.readFileSync('./compiled/Voting_sol_Voting.abi', 'utf-8'));
const contract = new web3.eth.Contract(abi);
// 部署合約
async function deployContract() {
const accounts = await web3.eth.getAccounts();
const gasEstimate = await contract.deploy({ data: '0x' + bytecode }).estimateGas();
const newContract = await contract.deploy({ data: '0x' + bytecode }).send({
from: accounts[0],
gas: gasEstimate,
});
console.log('Contract deployed to:', newContract.options.address);
}
deployContract();
腳本會使用你的 Infura 項目 ID,從你的帳戶中發送一筆交易,部署智能合約到測試網路。最後,它會在終端機上顯示部署合約的地址。
做到這裡,程式碼寫歸寫,但其實我完成的沒有很順利,並且一直出錯,只好去看其他成功的人的影片繼續多學習,希望我會有成功的一次。