iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
自我挑戰組

區塊鏈 NFT系列 第 27

D27-智能合約開發(下)

  • 分享至 

  • xImage
  •  

經過前兩天的介紹和實作,我們現在將學習如何部署智能合約以及與之進行互動。在開始之前,確保你已經成功編譯了智能合約並得到了字節碼(.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,從你的帳戶中發送一筆交易,部署智能合約到測試網路。最後,它會在終端機上顯示部署合約的地址。

做到這裡,程式碼寫歸寫,但其實我完成的沒有很順利,並且一直出錯,只好去看其他成功的人的影片繼續多學習,希望我會有成功的一次。


上一篇
D26 -智能合約開發(中)
下一篇
D28-區塊鏈和NFT對藝術界的影響和加密貨幣的稅收和監管議題
系列文
區塊鏈 NFT30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言