Web3 & DApp Development Fundamentals · บทเรียน

การเชื่อมต่อกับ Ethereum (Web3.js/Ethers.js)

เรียนรู้การใช้ไลบรารี JavaScript เช่น Web3.js หรือ Ethers.js เพื่อสร้างการเชื่อมต่อระหว่างส่วนหน้าเว็บกับเครือข่าย Ethereum

บทเรียน 2 จาก 311 ขั้นตอน

การเชื่อมต่อกับ Ethereum (Web3.js/Ethers.js) เป็นบทเรียน Web3 & DApp Development Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Web3 & DApp Development Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Web3 & DApp Development Fundamentals มีบทเรียนทั้งหมด 3 บทเรียน

บางส่วนของบทเรียนนี้ยังไม่ได้รับการแปล และแสดงเป็นภาษาอังกฤษ

DApps & Ethereum Connection

Welcome to connecting your DApp's front-end to the Ethereum network! Just like traditional apps need to talk to a server, decentralized applications (DApps) need a way to communicate with the blockchain.

This communication allows your DApp to read data from the blockchain, like account balances, and send transactions, like transferring tokens or calling smart contract functions.

Web3.js & Ethers.js Libraries

To bridge the gap between your web front-end (written in JavaScript) and the Ethereum blockchain, we use specialized libraries.

  • Web3.js: The original JavaScript library for interacting with Ethereum. It's widely used and robust.
  • Ethers.js: A more modern, lightweight, and often preferred alternative, especially for front-end development, known for its clear API.

Both libraries serve the same core purpose: to make it easy to send and receive data from Ethereum.

Understanding Ethereum Providers

Before your DApp can talk to the blockchain, it needs a provider. A provider is an abstraction that connects your DApp to an Ethereum node.

  • Browser Wallets (e.g., MetaMask): These inject a provider object (window.ethereum) directly into your browser's JavaScript environment.
  • Node Providers (e.g., Infura, Alchemy): These are services that run Ethereum nodes and provide an API endpoint (URL) for your DApp to connect to, usually for read-only access or when a user doesn't have a browser wallet.

The provider handles the low-level network communication.

Setting Up with npm

To use Web3.js or Ethers.js in your project, you'll typically install them using a package manager like npm (Node Package Manager).

First, make sure you have Node.js and npm installed. Then, in your project directory, open your terminal and run one of these commands:

  • For Web3.js: npm install web3
  • For Ethers.js: npm install ethers

Once installed, you can import them into your JavaScript files.

Connecting via MetaMask (Web3.js)

When a user has MetaMask installed, it injects window.ethereum. You can use this object to create a Web3.js instance and request user permission to connect their wallet.

Here's how you'd typically initialize Web3.js:

async function connectWeb3() {
  if (window.ethereum) {
    const web3 = new Web3(window.ethereum);
    try {
      // Request account access if needed
      await window.ethereum.request({ method: 'eth_requestAccounts' });
      console.log('Web3.js connected!');
      return web3;
    } catch (error) {
      console.error('User denied account access or error:', error);
    }
  } else {
    console.log('MetaMask not detected! Install it or use a different provider.');
  }
  return null;
}

// To run this in a browser, you'd call connectWeb3()
// For this runnable example, we'll simulate the connection.
async function main() {
  console.log('Simulating Web3.js connection...');
  const web3Instance = await connectWeb3(); // This would be called in a browser
  if (!web3Instance) {
    console.log('Failed to connect Web3.js (simulated).');
  } else {
    console.log('Web3.js connection successful (simulated)!');
  }
}

main();

Connecting via MetaMask (Ethers.js)

Ethers.js also uses window.ethereum to connect to browser wallets. It uses the concept of a Web3Provider to wrap the injected provider.

This approach offers a clean way to interact with the user's wallet and the network.

const { ethers } = require('ethers'); // In browser, ethers is global

async function connectEthers() {
  if (window.ethereum) {
    const provider = new ethers.providers.Web3Provider(window.ethereum);
    try {
      // Request account access
      await provider.send('eth_requestAccounts', []);
      console.log('Ethers.js connected!');
      return provider;
    } catch (error) {
      console.error('User denied account access or error:', error);
    }
  } else {
    console.log('MetaMask not detected! Install it or use a different provider.');
  }
  return null;
}

// To run this in a browser, you'd call connectEthers()
// For this runnable example, we'll simulate the connection.
async function main() {
  console.log('Simulating Ethers.js connection...');
  const ethersProvider = await connectEthers(); // This would be called in a browser
  if (!ethersProvider) {
    console.log('Failed to connect Ethers.js (simulated).');
  } else {
    console.log('Ethers.js connection successful (simulated)!');
  }
}

main();

Reading Data: Get Block Number

Once connected, you can easily read information from the blockchain. A common first step is to get the current block number. This is a read-only operation, meaning it doesn't require a transaction or gas.

Both Web3.js and Ethers.js provide straightforward methods for this.

Get Block Number (Web3.js Example)

Here's how you'd fetch the latest block number using Web3.js after establishing a connection:

// This simulates interaction with a Web3 provider.
// In a real DApp, 'web3' would be an instance connected
// to MetaMask or another Ethereum node.

const web3 = {
  eth: {
    getBlockNumber: async () => {
      // Simulate network call delay
      await new Promise(resolve => setTimeout(resolve, 500));
      return 12345678; // Example block number
    }
  }
};

async function main() {
  console.log("Attempting to get block number with Web3.js...");
  const blockNumber = await web3.eth.getBlockNumber();
  console.log("Current Block Number (Web3.js):", blockNumber);
}

main();

Get Block Number (Ethers.js Example)

And here's the equivalent operation using Ethers.js:

// This simulates interaction with an Ethers.js provider.
// In a real DApp, 'provider' would be connected to
// MetaMask or another Ethereum node.

const provider = {
  getBlockNumber: async () => {
    // Simulate network call delay
    await new Promise(resolve => setTimeout(resolve, 500));
    return 12345679; // Example block number
  }
};

async function main() {
  console.log("Attempting to get block number with Ethers.js...");
  const blockNumber = await provider.getBlockNumber();
  console.log("Current Block Number (Ethers.js):", blockNumber);
}

main();

Quick Check: Provider Role

What is the primary role of an Ethereum provider (like MetaMask or Infura) in a DApp's architecture?

Recap: Connecting DApps

Great job! In this lesson, you learned how DApps connect to the Ethereum network.

  • We explored Web3.js and Ethers.js as key JavaScript libraries for this interaction.
  • We understood the concept of an Ethereum provider (e.g., MetaMask, Infura) as the essential link to the blockchain.
  • You saw how to conceptually set up and initialize these libraries to read basic blockchain data like the current block number.

Next, we'll dive deeper into building a complete DApp!

เริ่มต้นได้ฟรี

เรียนรู้ Web3 & DApp Development Fundamentals ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
29
บทเรียน
105

คำถามที่พบบ่อย

บทเรียน “การเชื่อมต่อกับ Ethereum (Web3.js/Ethers.js)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเชื่อมต่อกับ Ethereum (Web3.js/Ethers.js)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Web3 & DApp Development Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Web3 & DApp Development Fundamentals มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเชื่อมต่อกับ Ethereum (Web3.js/Ethers.js)”

เรียนรู้การใช้ไลบรารี JavaScript เช่น Web3.js หรือ Ethers.js เพื่อสร้างการเชื่อมต่อระหว่างส่วนหน้าเว็บกับเครือข่าย Ethereum คุณปฏิบัติ Web3 & DApp Development Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Web3 & DApp Development Fundamentals หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Web3 & DApp Development Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน

บทเรียน “การเชื่อมต่อกับ Ethereum (Web3.js/Ethers.js)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Web3 & DApp Development Fundamentals นี้ได้ไหม

ได้ บทเรียน Web3 & DApp Development Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ส่วนหน้าและส่วนหลังใน Web3
  2. การเชื่อมต่อกับ Ethereum (Web3.js/Ethers.js)
  3. ตัวอย่าง DApp เบื้องต้น
← กลับไปที่ Web3 & DApp Development Fundamentals