---
title: "什麼是 Ethereum 節點？"
description: "Ethereum 節點就是任何運行連接 Ethereum 網路所需軟體的電腦。"
---

## 定義與應用

Ethereum 節點就是任何運行連接 Ethereum 網路所需軟體的電腦。節點彼此連接，來回傳送資訊以驗證交易並儲存區塊鏈的狀態資料。

雖然這些詞經常被交替使用，但這些相互連接的電腦是節點，而它們運行的軟體則稱為客戶端。

‍

## 節點對 Web3 為何重要？

<ImageBlock
  src="https://media.alchemy.com/1704163825-blockchain-nodes.gif"
  alt="區塊鏈節點在 Ethereum 網路中互相連接的動畫"
  width={2500}
  height={1700}
  priority
/>

節點構成了區塊鏈網路，也是存取它的唯一方式。

每個節點都維護自己的區塊鏈副本，並負責確保這份副本與其他所有節點的副本一致。每當你進行任何操作、需要有新區塊加入區塊鏈時，網路上的每一個節點都必須處理它。

<ImageBlock
  src="https://media.alchemy.com/1704163859-blockchain-nodes-2.gif"
  alt="區塊鏈節點對新區塊達成共識的動畫"
  width={2500}
  height={1700}
/>

每個節點會根據簽章與交易的有效性，選擇接受或拒絕最新的區塊。如果區塊被接受，它會繼續與其他節點分享，直到達成共識、所有節點都同步為止。節點能夠迅速拒絕無效的區塊，並識別出試圖違反規則的壞節點。正是這種節點間持續通訊的網路，讓系統不需要依賴單一真實來源，也避免了隨之而來的種種問題。

不同節點間的這種共識機制，使區塊鏈網路得以去中心化，也是 Web3 的基石。運行的節點越多，區塊鏈就越強健！

‍

## 節點有哪些不同類型？

節點分為三種類型：

- 輕節點
- 全節點
- 歸檔節點

_輕節點_只下載區塊標頭（block headers），這是它在網路上進行交易所需的最少資料。輕節點能夠驗證交易，是因為它可以利用這份資料重新產生出需要檢查的特定區塊。

這使得輕節點能有效率地與網路互動，並節省數 MB 的頻寬與數 GB 的儲存空間。因此，輕節點可以在記憶體資源有限的日常裝置上運行，例如智慧型手機和筆記型電腦。

但輕節點也有其限制。輕節點有時需要向全節點請求它無法取得的資料，這可能比全節點直接驗證交易花費更長的時間。

雖然運行輕節點是最簡單的節點運行方式，但安裝客戶端、設定變數、下載區塊標頭，並確認一切運作正常，仍然需要時間與相關知識。

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "Light Node", dataType: "object" },
      { key: "2", width: 200, title: "Full Node", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Block Headers</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Block Headers</p>", tooltip: "", icon: "" },
        id: 0,
      },
      {
        "1": { title: "<p>Full Block State</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Full Block State</p>", tooltip: "", icon: "" },
        id: 1,
      },
    ],
  }}
/>

_全節點_擁有驗證網路上區塊正確性所需的一切。它可以與任何[智能合約](https://www.alchemy.com/docs/how-to-deploy-a-smart-contract-to-the-sepolia-testnet)互動，也可以部署自己的智能合約。

完整使用與儲存資料，意味著全節點需要更多的運算與頻寬資源。全節點會下載、儲存並驗證完整的區塊鏈狀態——從第 0 個區塊到最新的區塊（已超過 1000 萬個且持續增加中），同步可能需要數週時間！

_歸檔節點_比全節點更進一步。全節點會刪除不再需要用於驗證的條目，只保留與鏈最新的互動記錄，而歸檔節點則會保留一切（多出數 TB 的資料）。這些詳細資料非常適合用於更有效率地查詢資訊，對某些應用來說很有用，但在大多數情況下算是過剩了。

‍

## 為什麼運行節點很困難？

要讓節點成功運行起來，可能是一段冗長且充滿挑戰的過程。如果你剛接觸 Web3 世界，還沒有相關技術能力（至少[目前還沒有](https://www.web3.university/)），情況更是如此。

光是全節點同步到超過 1000 萬個節點目前狀態所需的數週時間，就足以讓許多人打消在這個領域開發的念頭。

成本也是一個因素，而且會迅速累積。這包括購買硬體的高額初期投資，以及持續產生的電費和伺服器代管費用。運行節點時，你還必須確保它持續運作。網路延遲、停電或硬體問題都可能導致代價高昂的停機。

雖然[客戶端更新](https://www.alchemy.com/docs/internal-playbook-upgrading-ethereum-nodes)有助於不斷提升 Ethereum 的可擴展性、安全性與永續性，但這些變更也可能帶來意料之外的問題。而當你嘗試建構更大規模的東西時，[問題](https://www.alchemy.com/case-study/augur)才真正開始浮現！

‍

## Ethereum 節點在擴展上有哪些問題？

Ethereum 節點原本從未被設計成能擴展到如此大量的請求規模，因此會帶來一些獨特的挑戰。

### 可靠性

有些請求會要求節點從第 0 筆日誌一路查詢到目前的區塊，可能因此逾時。這些「死亡查詢（queries of death）」可能導致節點當機，而且隨時都可能發生。即使一個節點的可靠性達到標準節點的 72%，這也意味著一個應用程式一年可能有超過一百天處於離線狀態！

### 可擴展性

擴展節點基礎設施可能相當棘手。想像一下，你開發的應用程式一夜之間在 Twitter 上爆紅，但你現有運行的節點卻無法應付流量與交易量的突然暴增。

你無法迅速啟動新節點，因為它們需要數週時間才能同步完成。除此之外，新增的需求可能會壓垮現有的節點，導致它們當機。這可能造成停機，讓沒有人能使用你的應用程式，也讓使用者對你所建構的東西失去信心！

### 資料一致性

在 Web2 中，網站可以透過負載平衡器（load balancer，一種位於上層、將流量分配到各個無差異伺服器的網路層）來解決可擴展性的問題。但這在節點上並不可行，因為區塊鏈是非同步的。雖然兩個節點最終應該會擁有相同的最新區塊，但在任何特定時間點，其中一個可能會落後於另一個。

負載平衡可能導致兩種截然不同的結果，因為流量會被路由到對最新區塊有不同看法的不同節點。想像一下，你買了一直心心念念的那個[NFT](https://www.alchemy.com/nfts)，重新整理後卻發現它似乎消失了！

<ImageBlock
  src="https://media.alchemy.com/1704164101-load-balanced-nodes.gif"
  alt="負載平衡的區塊鏈節點回傳不一致資料的示意圖"
  width={583}
  height={588}
/>

為了試圖避免這類資料不一致的問題，開發團隊會拼湊出複雜的變通方案，但這[終究會導致錯誤，讓應用程式當機](https://www.alchemy.com/case-study/bamboo-relay)。所有這些問題意味著，在處理節點時，開發者往往必須在擴展性、維持可靠性或確保資料一致性之間做出取捨，這對所有人來說都不是理想的體驗。

‍

## 何時該使用 Node-as-a-Service？

如果這一切聽起來讓人有點應接不暇，別擔心！無論你才剛起步，還是覺得自己在節點問題上花費了太多時間與金錢，Node-as-a-Service 都可能是適合你的解決方案。

像 Alchemy 這樣的節點供應商會替你運行節點，讓你可以專注於開發應用程式。整合大多數供應商都非常容易——通常只需要一組 API，就能開始讀寫區塊鏈。

也就是說，你不必自己支付伺服器存取費用、滿足硬體需求並維護狀態，而是可以使用[Alchemy 的 Supernode 基礎設施](https://www.alchemy.com/supernode?a=8defd86d30)……

<ImageBlock
  src="https://media.alchemy.com/1704164125-alchemy-supernode-infra.png"
  alt="Alchemy Supernode 基礎架構示意圖，用於可擴充的 Ethereum 節點存取"
  width={800}
  height={804}
/>

……只需[一行程式碼](https://www.alchemy.com/docs/alchemy-quickstart-guide)。

<ImageBlock
  src="https://media.alchemy.com/1704164613-alchemy-code-api-key.jpg"
  alt="使用 Alchemy API 金鑰連接 Ethereum 的程式碼片段"
  width={4441}
  height={522}
/>

Alchemy 透過專有的協調服務（coordinator service）確保資料正確性大幅提升，並提供業界頂尖的可靠性。這都是透過一套專用的分散式系統來實現，讓你能夠快速、無縫地擴展，協助你更好地構建、更快地上線。

> 「使用自己的節點或容易出錯的服務，意味著浪費數百個寶貴的工程師工時，去處理與你的公司毫無關係的問題。沒有什麼能比得上 Alchemy 驚人的可靠性、速度和支援水準。」——Alex Atallah，[OpenSea](https://www.alchemy.com/dapps/opensea) 技術長

[領先的區塊鏈公司與專案](https://www.alchemy.com/customers)，如 OpenSea、Dapper Labs、0x、Royal、Axie Infinity 等數百家，都選擇了 Alchemy，原因在於我們極高的可靠性、口碑卓越的客戶服務，以及豐富的產品組合，讓[在 Web3 中構建](https://www.alchemy.com/docs/alchemy-quickstart-guide)比以往任何時候都更加容易。

<ImageBlock
  src="https://media.alchemy.com/1704164710-alchemy-portfolio.png"
  alt="使用 Alchemy 建置的公司標誌，包括 OpenSea 和 Dapper Labs"
  width={1600}
  height={370}
/>

[註冊 Alchemy 帳號](https://www.alchemy.com/?a=8defd86d30)，立刻開始構建，不必再為節點操心！如果你有興趣進一步了解 Alchemy 如何協助你踏上在 Web3 中構建的旅程，歡迎查看我們的[Alchemy 入門指南](https://www.alchemy.com/docs/alchemy-quickstart-guide)文件，並隨時透過我們的 [Alchemy Discord](https://discord.com/invite/mMGsVgd) 與我們聯繫，全年無休。
