---
title: "如何設定替代 RPC"
description: "新增備用節點供應商以避免停機與交易卡住"
---

## 什麼是遠端程序呼叫（RPC）？

遠端程序呼叫（RPC）是一種讓軟體能夠與同一網路上的其他系統遠端通訊，以存取軟體或資料的技術。在 RPC 的運作方式中，客戶端會請求某項資源（例如資料），伺服器則在遠端完成該請求。

在區塊鏈中，這項技術以 [RPC 節點](https://www.alchemy.com/overviews/what-is-an-ethereum-node)的形式被採用，這是一種 API，讓區塊鏈開發者能夠與區塊鏈伺服器（即節點）互動。因此，區塊鏈開發者才能打造像是[應用程式](https://www.alchemy.com/dapps/top/defi-dapps)這類需要透過 RPC 節點連接區塊鏈的 web3 軟體。

在這篇文章中，我們會說明[使用區塊鏈節點供應商](https://www.alchemy.com/overviews/blockchain-node-providers)以及設定備援 RPC 端點的重要性，並列出需要備援或替代 RPC 端點的各種原因。

此外，我們也會說明幾種設定備援 RPC 端點的方式，方便你將備援 RPC 端點整合進現有的區塊鏈專案中。

## 什麼是備援 RPC 端點？

備援遠端程序呼叫（RPC）端點是在主要 RPC 端點故障或無法運作時使用的備用端點。RPC 端點故障的風險，可能意味著數千甚至數百萬筆交易失敗。

因此，開發者開始尋找主要 RPC 端點故障時的應變方案。其中一個解法是設定備援 RPC 端點，在主要 RPC 端點無法正常運作時作為故障保護機制。

備援 RPC 端點與[私有 RPC 端點](https://www.alchemy.com/overviews/private-rpc-endpoint)類似，後者是為應用程式或錢包專用的端點，但兩者在實作方式上不同。備援 RPC 端點指的是備用方案，而私有 RPC 端點單純代表非公開的端點。

## 什麼時候適合使用備援 RPC 端點？

備援 RPC 端點對區塊鏈開發者來說有多種潛在用途，從[公開 RPC 端點不穩定](https://www.alchemy.com/infura-alternative)，到修正常見的交易問題，例如資料不準確等。在這個段落，我們會討論幾種備援 RPC 端點可能派上用場的常見情況。

### 1. 主要 RPC 供應商故障

設定備援 RPC 端點的主要用途之一，就是在主要 RPC 完全故障、導致具區塊鏈功能的軟體與區塊鏈連線中斷時，作為備用選項。如果沒有立即可用的替代 RPC，這可能導致以區塊鏈驅動的軟體暫時無法運作。

舉例來說，2022 年 7 月，由 Ankr 代管的 Polygon 公開 RPC 端點發生全網故障，資訊安全長（CISO）**Mudit Gupta** 建議改用像 Alchemy 這樣未受影響的替代 Polygon RPC 供應商。

<ImageBlock
  src="https://media.alchemy.com/1704096781-mudit-gupta-tweet.png"
  alt="2022 年 7 月，公用 RPC 供應商 Ankr 遭駭時，Polygon 建議改用 Alchemy。"
  width={600}
  height={504}
  caption="2022 年 7 月，公用 RPC 供應商 Ankr 遭駭時，Polygon 建議改用 Alchemy。"
/>

### 2. 交易無法透過主要 RPC 供應商送出

備援 RPC 端點另一個重要用途，是在主要 RPC 端點壅塞或速度過慢、導致交易延遲時作為備用選項。對於高度仰賴即時與區塊鏈通訊的應用程式來說，這種情況可能特別致命。

在選擇備援供應商之前，可以先比較 Alchemy 的 [RPC 供應商效能評測](https://www.alchemy.com/benchmarks)中目前的延遲與成功率數據。

當交易失敗時，使用備援 RPC 端點是不錯的應變方式，可確保 web3 使用者體驗不會因為不穩定的節點而受到影響。

### 3. 主要 RPC 供應商的資料不準確

由於區塊鏈是全球分散式系統，[部分節點供應商回傳的區塊鏈資料並不準確](https://www.alchemy.com/blog/data-accuracy)，原因是其節點網路與公開區塊鏈的資料不同步。

當節點供應商的伺服器叢集不同步時，會導致使用者收到不準確的資料，例如錯誤的餘額、遺失的 NFT，整體使用者體驗因此變差。

在這種情況下，若在區塊鏈應用程式中整合備援 RPC 端點，就能輕鬆地從主要節點供應商切換到次要的備援節點供應商，避免回傳不準確的資料。

### 4. 主要 RPC 供應商無法擴充

最後，當主要 RPC 端點在高流量時期（例如代幣空投、高關注度的 NFT 發行，或有獎勵機制的鏈上活動）出現擴充性問題時，備援 RPC 端點也能派上用場。

如此一來，備援 RPC 端點就能分擔高流量，避免主要 RPC 端點因擴充性壓力而崩潰。

## 處理故障端點的 3 種方式

當你遇到故障的 RPC 端點時，主要有三種處理方式：在同一個端點重試交易、在多個 RPC 端點清單間輪流嘗試交易，或是更換你的主要 RPC 供應商。

### 1. 在同一個 RPC 端點重試交易

處理故障 RPC 端點的其中一種方式，是向同一個 RPC 端點發送額外的請求。在這種做法中，開發者會以較短的間隔時間，反覆向同一個 RPC 端點發送請求。這種技巧最適合用在 RPC 端點只是暫時短暫故障的情況，讓開發者能持續發送請求，直到該 RPC 端點恢復上線。

### 2. 在多個 RPC 端點清單間輪替

另一種做法是連接一個或多個備援 RPC 端點，並在不同 RPC 端點清單間依序發送一系列 RPC 請求。透過這種技巧，開發者可以準備多個選項來重試交易，而不是在同一個故障端點上反覆重試同一筆交易，藉此避免單一故障的 RPC 端點拖垮整個區塊鏈應用程式。

當 RPC 端點發生故障時，使用備援 RPC 供應商清單的開發者只需連接清單中另一個已核可的端點即可。

## 如何在 Ethereum 上設定備援 RPC 供應商

由於建立一份備援 RPC 端點清單可能相當繁瑣，視你的應用程式架構而定，較簡單的做法是[將主要 RPC 端點換成更可靠的備援供應商](https://www.alchemy.com/?a=c4273aa140)，例如 Alchemy。

採用這種做法時，你不需要在多個端點間輪流嘗試，也不必在同一個端點上重試交易，而是可以直接把 RPC 端點網址完全替換成一個可靠的備援選項。
